Jak uzyskać znacznik czasu UTC / GMT +/- za pomocą funkcji date () w PHP? Na przykład, jeśli spróbuję
date("Y-m-d H:i:s", time());
Otrzymam znacznik czasu Unix; ale muszę uzyskać znacznik czasu UTC / GMT z ciągiem GMT / UTC +/- 0400 lub GMT / UTC +/- 1000 w oparciu o lokalne czasy.
Odpowiedzi:
Użycie
gmdate
zawsze zwróci datę GMT. Składnia jest taka sama jak dladate
.źródło
gmdate("U") == time()
.) Brzmi jak potencjalnie błędne zachowanie. Dokładnie sprawdź i zgłoś błąd w projekcie PHP.time()
zwraca „liczbę sekund od epoki Uniksa (1 stycznia 1970 00:00:00 GMT)”. UwagaGMT
. Fakt, że domyślnie twój system konwertuje to na twoją strefę czasową do wyświetlania, jest wygodą dla użytkownika. Wewnętrznie zawsze jest to GMT.Prosty gmdate () wystarczy
źródło
Jak już wcześniej odpowiedzieliśmy , od PHP 5.2.0 możesz użyć
DateTime
klasy i określić strefę czasową UTC za pomocą instancjiDateTimeZone
.Dokumentacja DateTime __construct () sugeruje przekazanie „now” jako pierwszego parametru podczas tworzenia instancji DateTime i określania strefy czasowej w celu uzyskania aktualnego czasu.
źródło
DateTime
? Uruchamiam go sam, wydaje się, że działa dobrze bez nich.namespace A
deklarację na górze, PHP założy , żeDateTime
odwołuje się doA\DateTime
, co jest błędne. Dodanie ukośnika odwrotnego rozwiązuje problem. Moim zdaniem to dobry nawyk, nawet jeśli nie używasz jeszcze przestrzeni nazw.źródło
źródło
Uzyskanie daty UTC
Uzyskanie znacznika czasu UTC
Wynik nie będzie inny, nawet jeśli masz
date_default_timezone_set
na swoim kodzie.źródło
Oprócz dzwonienia
gmdate
możesz również umieścić ten kod przed resztą kodu:Spowoduje to, że pozostałe połączenia związane z datą / godziną będą używać strefy czasowej GMT / UTC.
źródło
Możesz użyć funkcji gmmktime bez argumentów, aby uzyskać aktualny znacznik czasu UTC:
gmmktime będzie działać tylko wtedy, gdy czas twojego serwera korzysta z UTC. Na przykład mój serwer jest ustawiony na Stany Zjednoczone / Pacyfik. wymieniona powyżej funkcja przypomina czas pacyficzny.
źródło
Brakuje Twojego niestandardowego formatu,
O
aby uzyskać przesunięcie strefy czasowej od czasu lokalnego.Jednak w celu zmaksymalizowania przenośności / interoperacyjności zalecałbym korzystanie z formatu daty ISO8601
c
Możesz użyć również,
gmdate
a łańcuch przesunięcia strefy czasowej zawsze będzie+00:00
źródło
Możesz użyć następujących, aby uzyskać czas UTC:
źródło
źródło
Poniżej znajdź kod PHP, aby uzyskać aktualny czas UTC (uniwersalny czas koordynowany)
źródło