Jak formatować datę ISO 8601 z przesunięciem strefy czasowej w JavaScript?
Cel: Znaleźćlocal time
iUTC time offset
następnie skonstruuj adres URL w następującym formacie.
Przykładowy adres URL: / Actions / Sleep? Duration = 2002-10-10T12: 00: 00−05: 00
Format jest oparty na zaleceniu W3C:http://www.w3.org/TR/xmlschema11-2/#dateTime
Dokumentacja mówi:
Na przykład 2002-10-10T12: 00: 00−05: 00 (południe 10 października 2002 r., Centralny czas letni i wschodni w USA) jest równy 2002-10-10T17: 00: 00Z, pięć godzin później niż 2002-10-10T12: 00: 00Z.
W oparciu o moje zrozumienie muszę znaleźć mój czas lokalny za pomocą nowej funkcji Date (), a następnie użyć funkcji getTimezoneOffset () do obliczenia różnicy, a następnie dołączyć ją do końca łańcucha.
1. Uzyskaj czas lokalny w formacie
var local = new Date().format("yyyy-MM-ddThh:mm:ss"); //today (local time)
wydajność
2013-07-02T09:00:00
2. Uzyskaj przesunięcie czasu UTC o godzinę
var offset = local.getTimezoneOffset() / 60;
wydajność
7
3. Utwórz adres URL (tylko część czasu)
var duration = local + "-" + offset + ":00";
wydajność:
2013-07-02T09:00:00-7:00
Powyższy wynik oznacza, że mój czas lokalny to 2013/07/02 9 rano, a różnica od czasu UTC wynosi 7 godzin (czas UTC wynosi 7 godzin przed czasem lokalnym)
Jak dotąd wydaje się działać, aleco jeśli getTimezoneOffset () zwraca wartość ujemną, taką jak -120?
Zastanawiam się, jak powinien wyglądać format w takim przypadku, ponieważ nie mogę dowiedzieć się z dokumentu W3C. Z góry dziękuję.