У меня есть задание WordPress cron, которое периодически отправляет электронное письмо и сохраняет метку времени, когда оно было отправлено в качестве опции, и я хотел бы отобразить дату на странице настроек. Что-то типа «Последнее письмо было отправлено на« х »». Я на западном побережье США, поэтому наше время в настоящее время семь часов от UTC.
Мой ожидаемый результат от date_i18n () с передачей метки времени будет локально отформатированной датой с семичасовой корректировкой от UTC. Тем не менее, он возвращает время в UTC. Даже попытка получить текущее время не возвращает то, что я думаю, будет ожидаемым результатом.
Например: echo date_i18n('F d, Y H:i');
выходные данные 05 апреля 2013 года 11:36, как и ожидалось, но echo date_i18n('F d, Y H:i',time());
выходные данные 05 апреля 2013 года 18:36.
Это намеренно? Как я могу вернуть локально отформатированную дату из существующей отметки времени? Спасибо за любую помощь.
Ответы:
Я знаю, что опаздываю на три месяца, но здесь вам нужна функция WordPress
get_date_from_gmt()
.Функция принимает дату GMT / UTC в
Y-m-d H:i:s
формате первого параметра, а желаемый формат даты - в качестве второго параметра. Он преобразует вашу дату в местный часовой пояс, установленный на экране настроек.Пример использования:
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
источник
echo get_date_from_gmt ( date( 'Y-m-d H:i:s', $my_timestamp ), get_option('date_format') . ' - '. get_option('time_format') );
Из кодекса :
Попробуй это:
Это устанавливает дату PHP по умолчанию равной опции timezone_string в WP, если она доступна, на время выполнения скрипта.
источник
date_i18n('F d, Y H:i', $your_timestamp)
не работает?echo date_i18n('F d, Y H:i',1365194723)
оператор в верхней части index.php, что дает мне UTC, а не время на западном побережье США.date_i18n($format, $timestamp)
форматы в соответствии с языком, но не часовым поясом.get_date_from_gmt($datestring, $format)
Форматы в соответствии с часовым поясом, но не локалью. Чтобы получить форматирование в соответствии с часовым поясом и локалью, я делаю следующее:Пример программы:
Выход для часового пояса Лос-Анджелеса:
Ссылки:
DateTimeZone
документы в php.netDateTime
документы в php.net, в том числеsetTimestamp
,getTimestamp
иformat
date_i18n
источник
Добавьте смещение часового пояса к вашей отметке времени.
или лучше;
источник
Преобразование UTC в строку в часовом поясе, языке и формате в настройках WordPress
Я создал функцию хорошего документа, которая преобразует строку даты и времени в UTC в красивую строку даты и времени на правильном языке, формате и часовом поясе. Не стесняйтесь копировать это.
Например,
"2019-05-30 18:06:01"
возвращение (в UTC) вернулось бы"Maggio 30, 2019 10:06 am"
.Ссылки:
get_date_from_gmt
DateTimeZone
документы в php.netDateTime
документы в php.net, в том числеgetTimestamp
date_i18n
date_default_timezone_set( 'UTC' );
независимо от того, какой часовой пояс выбран администратором в пользовательском интерфейсе, поэтому имейте это в виду при определении поведения встроенных функций PHP. Смотритеdate_default_timezone_set
документы в php.net.источник
Вот что, похоже, работает на моей машине (ничего другого не помогло):
Оригинальный код: https://www.simonholywell.com/post/2013/12/convert-utc-to-local-time/
Это не использует,
date_l18n()
но я думаю, что можно было бы использовать его позже ...источник