Eu tenho um trabalho cron do WordPress que envia um email periodicamente e salva o carimbo de data e hora quando ele foi enviado como opção, e eu gostaria de exibir uma data em uma página de configurações. Algo como "O último email foi enviado em 'x'". Estou na costa oeste dos EUA, então nosso horário é atualmente de sete horas fora do UTC.
Minha saída esperada de date_i18n (), passando a data e hora, seria uma data formatada localmente com um ajuste de sete horas do UTC. No entanto, ele retorna a hora no UTC. Mesmo tentando obter o tempo atual não retorna o que eu pensaria que seria o resultado esperado.
Por exemplo: echo date_i18n('F d, Y H:i');
gera 05 de abril de 2013 11:36 conforme o esperado, mas echo date_i18n('F d, Y H:i',time());
gera 05 de abril de 2013 18:36.
Isso é intencional? Como posso retornar uma data formatada localmente a partir de um carimbo de data / hora preexistente? Obrigado por qualquer ajuda.
Respostas:
Sei que estou com três meses de atraso, mas a função que você deseja aqui é o WordPress '
get_date_from_gmt()
.A função aceita uma data GMT / UTC no
Y-m-d H:i:s
formato como o primeiro parâmetro e o formato de data desejado como o segundo parâmetro. Ele converterá sua data para o fuso horário local, conforme definido na tela Configurações.Exemplo de uso:
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
fonte
echo get_date_from_gmt ( date( 'Y-m-d H:i:s', $my_timestamp ), get_option('date_format') . ' - '. get_option('time_format') );
Do codex :
Tente o seguinte:
Isso define a data padrão do PHP para a opção timezone_string do WP, se disponível, durante o script.
fonte
date_i18n('F d, Y H:i', $your_timestamp)
não funcionar?echo date_i18n('F d, Y H:i',1365194723)
declaração no topo do index.php, que me dá o tempo UTC, em vez da costa oeste dos EUA.date_i18n($format, $timestamp)
formatos de acordo com a localidade, mas não o fuso horário.get_date_from_gmt($datestring, $format)
formatos de acordo com o fuso horário, mas não a localidade. Para obter a formatação de acordo com o fuso horário e a localidade, estou fazendo o seguinte:Exemplo de programa:
Saída para o fuso horário de Los Angeles:
Referências:
DateTimeZone
docs em php.netDateTime
docs em php.net, incluindosetTimestamp
,getTimestamp
eformat
date_i18n
fonte
Adicione o deslocamento do fuso horário ao seu registro de data e hora.
ou melhor;
fonte
Convertendo UTC em string no fuso horário, idioma e formato nas opções do WordPress
Eu criei uma função de documento que converte uma string de data e hora no UTC em uma bonita string de data e hora no idioma, formato e fuso horário corretos. Sinta-se livre para copiá-lo.
Por exemplo, a passagem
"2019-05-30 18:06:01"
(no UTC) retornaria"Maggio 30, 2019 10:06 am"
.Referências:
get_date_from_gmt
DateTimeZone
docs em php.netDateTime
documentos em php.net, incluindogetTimestamp
date_i18n
date_default_timezone_set( 'UTC' );
independentemente do fuso horário que o administrador selecionou na interface do usuário. Lembre-se disso ao determinar o comportamento das funções PHP integradas. Veja osdate_default_timezone_set
documentos em php.net.fonte
Isto é o que parece funcionar na minha máquina (nenhuma das outras coisas funcionou):
Código original: https://www.simonholywell.com/post/2013/12/convert-utc-to-local-time/
Não está usando,
date_l18n()
mas acho que alguém poderia usá-lo mais tarde ...fonte