Estou precisando de uma maneira fácil de converter um carimbo de data e hora em UTC (de qualquer fuso horário em que o servidor esteja) ESPERAMENTE, sem usar nenhuma biblioteca.
89
Experimente getTimezone e setTimezone , veja o exemplo
(Mas isso usa uma classe)
ATUALIZAR:
Sem nenhuma aula, você poderia tentar algo assim:
$the_date = strtotime("2010-01-19 00:00:00");
echo(date_default_timezone_get() . "<br />");
echo(date("Y-d-mTG:i:sz",$the_date) . "<br />");
echo(date_default_timezone_set("UTC") . "<br />");
echo(date("Y-d-mTG:i:sz", $the_date) . "<br />");
NOTA: pode ser necessário definir o fuso horário de volta ao original também
gmdate
vez de alterar o fuso horário padrão para UTC. Porquegmdate
usa UTC automaticamente.Use strtotime para gerar um carimbo de data / hora a partir da string fornecida (interpretado como hora local) e use gmdate para obtê-lo como uma data UTC formatada de volta.
Exemplo
Conforme solicitado, aqui está um exemplo simples:
fonte
Usando DateTime:
fonte
Faça desta forma:
ou simplesmente
para obter "AGORA" em UTC.
Verifique a referência:
http://www.php.net/manual/en/function.gmdate.php
fonte
Se você tiver uma data neste formato AAAA-MM-HH dd: mm: ss, você pode enganar o php adicionando um UTC no final de sua "string de data e hora" e usar strtotime para convertê-lo.
Isso irá imprimir isto:
E como você pode ver, ele também cuida do problema do horário de verão.
Uma maneira um pouco estranha de resolver isso .... :)
fonte
:D
Converta a string de fuso horário local em string UTC.
por exemplo, fuso horário da Nova Zelândia
if $ datetime = "2016-02-01 00:00:01", $ output = "2016-01-31 11:00:01";
if $ datetime = "2016-02-29 23:59:59", $ output = "2016-02-29 10:59:59";
if $ datetime = "2016-05-01 00:00:01", $ output = "2016-04-30 12:00:01";
if $ datetime = "2016-05-31 23:59:59", $ output = "2016-05-31 11:59:59";
https://en.wikipedia.org/wiki/Time_in_New_Zealand
fonte
Como strtotime requer um formato de entrada específico, DateTime :: createFromFormat pode ser usado ( php 5.3+ é necessário )
fonte
Eu às vezes uso este método:
Funciona
todosMOST parte do tempo.fonte
Se você não se importa em usar a classe DateTime do PHP , que está disponível desde o PHP 5.2.0, há vários cenários que podem se adequar à sua situação:
Se você tiver um
$givenDt
objeto DateTime que deseja converter para UTC, isso o converterá para UTC:Se você precisar do original
$givenDt
posteriormente, poderá, como alternativa, clonar o objeto DateTime fornecido antes da conversão do objeto clonado:Se você tiver apenas uma string de data e hora, por exemplo
$givenStr = '2018-12-17 10:47:12'
, primeiro crie um objeto de data e hora e depois o converta. Observe que isso assume que$givenStr
está no fuso horário configurado do PHP.Se a string datetime fornecida estiver em algum fuso horário diferente daquele em sua configuração do PHP, crie o objeto datetime fornecendo o fuso horário correto (consulte a lista de fusos horários suportados pelo PHP ). Neste exemplo, assumimos o fuso horário local em Amsterdã:
fonte
http://php.net/manual/en/function.strtotime.php ou se você não precisar usar uma string, mas componentes de tempo, então http://us.php.net/manual/en/function.mktime. php
fonte
Com o PHP 5 ou superior, você pode usar a função datetime :: format (ver documentação http://us.php.net/manual/en/datetime.format.php )
fonte
experimentar
irá produzir:
você deve alterar o formato da hora para ver outra saída
fonte
Função de normalização de propósito geral para formatar qualquer carimbo de data / hora de qualquer fuso horário para outro. Muito útil para armazenar registros de data e hora de usuários de diferentes fusos horários em um banco de dados relacional. Para comparações de banco de dados, armazene o carimbo de data / hora como UTC e use com
gmdate('Y-m-d H:i:s')
Uso:
fonte
como alternativa, você pode tentar isto:
isso resultará em:
você pode usar isso dentro do atributo de valor de uma caixa de entrada de texto se desejar exibir apenas uma data somente leitura.
remova o 'e' se não quiser mostrar sua região / país.
fonte
Siga estas etapas para obter a hora UTC de qualquer fuso horário definido no sistema local do usuário (isso será necessário para aplicativos da web para salvar diferentes fusos horários em UTC):
Javascript (lado do cliente):
Php (lado do servidor):
fonte
Como uma melhoria na resposta de Phill Pafford (não entendi seu 'Yd-mTG: i: sz' e ele sugeriu reverter o fuso horário). Então, proponho isso (compliquei alterando o formato HMTL em texto simples / ...):
fonte