Czytałem o tym, jak to robić przez cały ranek, a ogólna zgoda jest taka: przechowuj swoje znaczniki czasu w UTC i oblicz z nich offset.Wyświetlanie stref czasowych bez użycia UTC
Jednak, podobnie jak większość ludzi, utrzymuję istniejący kod i nie mogę zmienić sposobu przechowywania naszych dat. Przynajmniej nie w wyznaczonym czasie.
Moje pytanie brzmi: czy mogę bezpiecznie zrobić coś takiego?
// this is my time zone
$timestamp = strtotime($timestampFromDatabase);
date_default_timezone_set('America/New York');
$tz = date_default_timezone_get();
// this is theoretically their timezone, which will eventually
// be taken from a session variable
date_default_timezone_set('Europe/Paris');
$offset = time() - $timestamp;
$timestamp -= $offset;
// now that I have the offset, display dates like this
date('r', $timestamp);
Niektórzy ludzie odradzali robienie arytmetyki terminów, ale czy to, co robię tutaj źle? Czy istnieje lepszy sposób? Czy są pułapki, na które muszę uważać? Szczególnie interesuje mnie rodzaj błędów, które ta metoda mogłaby wytworzyć, a jeśli tak, kto na nich wpłynie?
Mój szef to facet, który nie dba o to, czy błąd dotyczy tylko 1% bazy użytkowników.
Edytuj: Czy mogę uczynić to jaśniejszym? Wydaje mi się, że nie mam na to zbyt wielu chętnych. Ktoś? Nawet niejasna sugestia lub link byłyby niezwykle pomocne.
Można również użyć tej metody, aby zaktualizować bazę danych do UTC w jednorazowej pracy dla przyszłego wykorzystania. –
To jest niesamowite. Załóżmy jednak, że używam PHP 5.14, który nie ma tego obiektu. Czy istnieje inny sposób? –
Zend Framework ma rozwiązanie oparte na php w Zend_Date, ale prosi o PHP 5.2.4 jako ogólne wymaganie dla frameworka. To może zadziałać. Czy możesz aktualizować lub rekompilować PHP? –