Alguém pode me dizer como obter o fuso horário definido no WordPress Admin?
Por exemplo, se o blog estiver definido como horário do leste, preciso dessa string exata para imprimir:
EUA / Leste
Isto é para uma função que vive em functions.php no meu tema.
A situação lamentável é que existem de fato duas opções diferentes:
timezone_string
, que salva o fuso horário no estilo PHP.gmt_offset
, que salva o deslocamento numérico da flutuação em horas.Porém, em ambientes mais novos,
timezone_string
na verdade , substituigmt_offset
, o valor retornado pelo último será baseado no primeiro. No entanto, o oposto não é verdadeiro -gmt_offset
pode ser válido, enquantotimezone_string
está vazio.Gastei bastante tempo com essas coisas e a versão mais atual que implementei na minha
WpDateTime
biblioteca é a seguinte:Isso tentará instanciar um objeto de fuso horário significativo em todos os casos possíveis, desde que todas as informações estejam disponíveis.
fonte
(int)
por $ horas efloor
por $ minutos é problemático? De acordo com a documentação,(int)
efloor
são quase os mesmos, exceto(int)
que arredondará -4,5 a -4 efloor
arredondará para -5. Parece que isso dará compensações incorretas do fuso horário negativo?Verifique a página de referência da opção . A opção
gmt_offset
retorna um número inteiro. Por exemplo, se o fuso horário estiver definido como Horário do Leste (por exemplo, América / Nova_Iorque),gmt_offset
deve ser -5.fonte
Não pense que você obterá uma string como US / Eastern sem armazenar todas as strings que deseja em uma matriz e se referir a elas. Usando PHP, você pode obter a abreviação do fuso horário, ou seja, EST ; e se você tiver esses valores armazenados em uma matriz com as seqüências desejadas, poderá procurá-los.
fonte
Para adicionar à Bainternet (estou adicionando isso como resposta porque não posso comentar - tenho menos de 50 pontos na pilha de desenvolvimento do WP).
O WordPress armazenará apenas uma sequência de fuso horário se você selecionar uma sequência de fuso horário nas configurações gerais. A seleção UTF é o padrão da lista, mas você pode rolar até as seqüências de fuso horário. Se você definir uma sequência de fuso horário, as sequências UTF e Fuso Horário serão definidas. Eles serão os mesmos (ou seja, o UTF será redefinido para a nova zona quando você selecionar um fuso horário da cadeia do fuso horário).
(WordPress 4)
fonte
Existem algumas opções, nenhuma das quais realmente funciona muito bem. Este é um bug do WordPress, e é realmente péssimo, porque a hora está errada, a menos que você defina seu site como UTC ... o que é confuso e nem sempre é possível.
Acho que este próximo código só funcionará se você escolher seu fuso horário (em Configurações -> Geral em admin) como uma cidade nomeada em vez de um deslocamento de número GMT. Eu não testei isso, mas é muito possível que
get_option('gmt_offset')
seja definido quandoget_option('timezone_string')
não for.A desvantagem disso é que o WordPress assume que o PHP está definido como UTC ao criar registros de data e hora do mysql, para que você possa estragar seu banco de dados um pouco sempre que mudar de fuso horário! Sem mencionar outros plugins do WP, podemos supor que o ambiente PHP esteja sempre no UTC.
Portanto, se você deseja apenas um horário correto - pode forçar seu carimbo de data / hora para estar no UTC com:
Infelizmente, embora correto, o fuso horário será definido como UTC.
E note que você não pode tanto usar o "verdadeiro" bandeira e a função timezone_set padrão.
Qualquer solução adequada será um trecho de código que é responsável por
gmt_offset
ANDtimezone_string
e os usa para definir um fuso horário em alguma entrada. O WP pressupõe que o PHP esteja definido como UTC ao executar registros de data e hora do mysql, e poderá quebrar outros plugins.Existe uma dessas soluções em https://www.skyverge.com/blog/down-the-rabbit-hole-wordpress-and-timezones/ mas, novamente, este é um BUG; portanto, você deve usar o
get_post_time($date_format, TRUE)
código para obter um carimbo de data e hora que está realmente correto.fonte
Dado que o wordpress mantém a string de fuso horário na tabela de opções, você pode usar a maneira orientada a objetos para obter a hora certa no seu site wordpress:
fonte