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ę.

questionAnswers(4)

yourAnswerToTheQuestion