PHP - Conversão de Seqüência de caracteres de Formato de Fuso horário para Compensar Inteiro [fechado]

StackOverflow https://stackoverflow.com//questions/25086456

Pergunta

Muito simples:

O PHP retorna fusos horários no seguinte formato:

"America/Los_Angeles"

Eu quero convertê-lo para:

-7

Eu encontrei muitos códigos para convertê-lo, o cálculo das diferenças com funções personalizadas..mas como um minimalista, eu não posso acreditar que não há uma maneira mais simples (e, talvez, um datetime função) para obter o valor imediatamente..alguém sabe sobre isso?

Foi útil?

Solução

$dateTimeZone = new DateTimeZone("America/Los_Angeles");
$date = new DateTime(null, $dateTimeZone);
echo $dateTimeZone->getOffset($date)/60/60;

Demonstração

Outras dicas

PHP usa o padrão de fusos horários a partir de a IANA de fuso horário do banco de dados.

"America/Los_Angeles" é não o mesmo -7.-7 é um "deslocamento de fuso horário", não um "fuso horário".Leia "Fuso Horário != Offset" em o fuso horário etiqueta wiki.

Considere que "America/Los_Angeles" representa-NOS, Hora do Pacífico, que é apenas -7 durante o Horário de Verão do Pacífico (PDT).O resto do ano, é no Horário Padrão do Pacífico (PST), que é-8.

O código fornecido na John responder corretamente irá dar-lhe o deslocamento de um fuso horário usa para o atual data e hora.Reconhecer que o valor irá variar dependendo de quando você executar o código.

Além disso, você deve perceber que enquanto você pode determinar o deslocamento para um fuso horário específico em um determinado momento, o inverso não é verdadeiro.Você não tratar -7 como uma zona de tempo e esperar de alguém para ser capaz de dizer o que é Horário de Verão do Pacífico.Considere que -7 também se aplica para o Mountain Standard Time, que, Arizona, usa o ano todo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top