Mam zadanie cron WordPress, które okresowo wysyła wiadomość e-mail i zapisuje znacznik czasu, gdy został wysłany jako opcja, i chciałbym wyświetlić datę na stronie ustawień. Coś w stylu „Ostatni e-mail został wysłany na„ x ””. Jestem na zachodnim wybrzeżu USA, więc nasz czas jest obecnie siedem godzin poza UTC.
Moje oczekiwane wyjście z date_i18n (), przekazując mu znacznik czasu, byłoby lokalnie sformatowaną datą z siedmiogodzinną korektą od UTC. Zwraca jednak czas w UTC. Nawet próba uzyskania bieżącego czasu nie zwraca tego, co moim zdaniem byłoby oczekiwanym rezultatem.
Na przykład: echo date_i18n('F d, Y H:i');
wyniki 05 kwietnia 2013 11:36 zgodnie z oczekiwaniami, ale echo date_i18n('F d, Y H:i',time());
wyniki 05 kwietnia 2013 18:36.
Czy to celowe? Jak mogę zwrócić lokalnie sformatowaną datę z wcześniej istniejącego znacznika czasu? Dziękuję za wszelką pomoc.
Odpowiedzi:
Wiem, że spóźniłem się o trzy miesiące, ale funkcja, którą chcesz tutaj, to WordPress
get_date_from_gmt()
.Funkcja przyjmuje datę GMT / UTC w
Y-m-d H:i:s
formacie jako pierwszy parametr, a żądany format daty jako drugi parametr. Przekształci twoją datę w lokalną strefę czasową ustawioną na ekranie Ustawienia.Przykładowe użycie:
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
źródło
echo get_date_from_gmt ( date( 'Y-m-d H:i:s', $my_timestamp ), get_option('date_format') . ' - '. get_option('time_format') );
Z kodeksu :
Spróbuj tego:
Ustawia domyślną datę PHP na opcję timezone_string WP, jeśli jest dostępna, na czas trwania skryptu.
źródło
date_i18n('F d, Y H:i', $your_timestamp)
nie działa?echo date_i18n('F d, Y H:i',1365194723)
instrukcję na początku index.php, która daje mi czas UTC, a nie czas zachodniego wybrzeża USA.date_i18n($format, $timestamp)
formaty zgodne z ustawieniami regionalnymi, ale nie strefą czasową.get_date_from_gmt($datestring, $format)
formaty zgodne ze strefą czasową, ale nie z ustawieniami regionalnymi. Aby uzyskać formatowanie według strefy czasowej i ustawień regionalnych, wykonuję następujące czynności:Przykładowy program:
Dane wyjściowe dla strefy czasowej Los Angeles:
Bibliografia:
DateTimeZone
dokumenty w php.netDateTime
docs w php.net, w tymsetTimestamp
,getTimestamp
iformat
date_i18n
docsźródło
Dodaj przesunięcie strefy czasowej do znacznika czasu.
albo lepiej;
źródło
Konwersja UTC na ciąg znaków w strefie czasowej, języku i formacie w opcjach WordPress
Stworzyłem dobrze dokumentującą funkcję, która konwertuje ciąg daty i godziny w UTC na ładny ciąg daty i godziny we właściwym języku, formacie i strefie czasowej. Skopiuj go.
Na przykład przekazanie
"2019-05-30 18:06:01"
(w UTC) wróci"Maggio 30, 2019 10:06 am"
.Bibliografia:
get_date_from_gmt
docsDateTimeZone
dokumenty w php.netDateTime
dokumenty w php.net, w tymgetTimestamp
date_i18n
docsdate_default_timezone_set( 'UTC' );
bez względu na strefę czasową wybraną przez administratora w interfejsie użytkownika, dlatego należy pamiętać o tym przy określaniu zachowania wbudowanych funkcji PHP. Zobaczdate_default_timezone_set
dokumenty w php.net.źródło
To wydaje się działać na moim komputerze (żadne inne rzeczy nie działały):
Oryginalny kod: https://www.simonholywell.com/post/2013/12/convert-utc-to-local-time/
Nie używa,
date_l18n()
ale myślę, że można go później wykorzystać ...źródło