Estou usando o FuelPHP 1.6.1 no meu Mac. Quando eu uso, Date::create_from_string('1970-01-01 00:00:00', 'mysql')->get_timestamp();
ele converte a data e hora para o fuso horário local antes de enviá-lo para Date::forge();
. Portanto, ele retorna -3600 em vez de 0; Fuel::$timezone
está definido como “Europa / Berlim”.
A função é relativamente inútil, pois funciona pressupondo que o fuso horário da string é o mesmo que o fuso definido por Fuel::init();
. Às vezes, este não é o caso, por exemplo, quando o servidor MySQL está em UTC, mas o servidor PHP está em um fuso horário diferente. Seria melhor se houvesse um parâmetro de fuso horário extra (pelo menos padronizado para UTC) para definir o fuso horário temporariamente antes mktime()
da Linha 174 decore/classes/date.php
ser chamada, especialmente quando você espera que os timestamps SEMPRE estejam em GMT, o que Date::forge()
é.
Como solução alternativa, apenas chamo Date::forge(strtotime('01 Jan 1970 00:00:00 UTC'), 'UTC');
para torná-lo mais utilizável por outras funções, como format();
.
(Postado originalmente nos Fóruns FuelPHP .)
Harro Verton, o líder do projeto para FuelPHP, então respondeu:
Isso já foi abordado na base de código 2.0, onde Date foi completamente reescrito para ser (entre outras coisas) totalmente ciente do fuso horário.
O FuelPHP acabou de lançar 1.7 em outubro de 2013, e provavelmente poderemos ver 2.0 no próximo ano. Por enquanto, certifique-se de ter seus casos de fuso horário devidamente testados antes de entrar em produção. Felicidades!