Próbuję napisać skrypt, w którym chcę przekonwertować dowolną strefę czasową do UTC
i odwrócić. Ale z niektórych miejsc, z których dowiedziałem się, że podczas konwersji dowolnej strefy czasowej na UTC
z uwzględnieniem czasu letniego lub bez uwzględnienia czasu letniego, da ten sam UTC
czas. Na przykład: Jeśli spróbuję przekonwertować ten:
$mytime = '2011-03-31 05:06:00.000';
$myzone = 'America/New_York';
do UTC z czasem letnim i bez czasu letniego, dostanę ...
(New_York->UTC DST=Yes)2011-03-31 09:06:00
(New_York->UTC DST=No)2011-03-31 09:06:00 ..........
Czy to jest poprawne? Jeśli tak, to dlaczego ??? Proszę, niech ktoś mi odpowie.
Odpowiedzi:
Nie, sam UTC nigdy nie ma czasu letniego. Jest to stały układ odniesienia, względem którego wyrażone są inne strefy czasowe.
Ze strony Wikipedii UTC :
Innymi słowy, gdy strefa czasowa obserwuje czas letni, jej przesunięcie względem czasu UTC zmienia się, gdy następuje przejście na czas letni, ale jest to ta strefa czasowa, w której obserwuje się czas letni, a nie UTC.
Nie wiedząc zbyt wiele o obsłudze stref czasowych w PHP, wydaje mi się dziwne, że możesz określić "z czasem letnim" lub "bez czasu letniego" w konwersji - same strefy czasowe określają, kiedy zaczyna się czas letni ... nie powinno to być coś, co sam określisz.
źródło
date_sunrise
funkcją informującą o wschodzie słońca. Nie jestem pewien, czy do konwersji potrzebny jest czas letni, ale jest to obywatel pierwszej klasy obiektu daty: php.net/manual/en/function.date.php .Mam ten sam problem, używając tego kodu:
date_default_timezone_set('UTC'); $nowdate = date('l jS \of F Y h:i:s A'); echo "Current date and time is: " . $nowdate;
Teraz jest lato, a czas, który generuje ten kod, jest opóźniony o godzinę - więc nie sądzę, aby czas UTC w PHP dostosowywał się do czasu letniego.
Ciekawe, czy ktoś ma rozwiązanie ...
EDYTOWAĆ:
Znalazłem ten kod na forum, działa idealnie !!
date_default_timezone_set('Europe/London'); $TIME = date("m/d/Y H:i",time());
Możesz więc wywołać bieżącą datę i godzinę, używając $ TIME. Wyjście można dostosować tak, aby wyświetlało się inaczej, zmieniając bit wewnątrz znacznika date (). Jeśli chcesz dostosować wyjście date (), skorzystaj z tego przewodnika: http://php.net/manual/en/function.time.php
Mam nadzieję że to pomoże :)
źródło