Ziel: Suchen 本地時間
和UTC時間偏移
und erstellen Sie dann die URL im folgenden Format.
Beispiel-URL: /Actions/Sleep?duration=2002-10-10T12:00:00?05:00
Dieses Format basiert auf W3C-Empfehlungen. In der Dokumentation steht:
Zum Beispiel 2002-10-10T12:00:00?05:00 (Mittag am 10. Oktober 2002, Zentrale Sommerzeit und Eastern Standard Time) Entspricht 2002-10-10T17:00:00Z, also fünf Stunden sp?ter als 2002-10-10T12:00:00Z.
Soweit ich wei?, muss ich die Differenz über die Funktion new Date()
查找本地時間,然后使用 getTimezoneOffset()
berechnen und sie dann an das Ende der Zeichenfolge anh?ngen.
Verwenden Sie format
, um die Ortszeit abzurufen
var local = new Date().format("yyyy-MM-ddThh:mm:ss"); // 2013-07-02T09:00:00
UTC-Zeitversatz abrufen
var offset = local.getTimezoneOffset() / 60; // 7
URL erstellen (nur Zeitteil)
var duration = local + "-" + offset + ":00"; // 2013-07-02T09:00:00-7:00
Die obige Ausgabe bedeutet, dass meine Ortszeit am 2. Juli 2013 9 Uhr morgens ist, was 7 Stunden von der UTC abweicht (UTC ist 7 Stunden vor der Ortszeit)
Bisher scheint es zu funktionieren, aber was ist, wenn getTimezoneOffset()
einen negativen Wert zurückgibt (z. B. -120)?
Ich frage mich, wie das Format in diesem Fall aussehen soll, weil ich es aus der W3C-Dokumentation nicht herausfinden kann.
getTimezoneOffset()
返回您引用的規(guī)范所需格式的相反符號。
此格式也稱為 ISO8601,或更準確地說是 RFC3339。
在此格式中,UTC 用 Z
表示,而所有其他格式均由 UTC 的偏移量表示。含義與 JavaScript 相同,但減法的順序相反,因此結(jié)果帶有相反的符號。
此外,本地 Date
對象上沒有名為 format
的方法,因此 #1 中的函數(shù)將失敗,除非您使用庫來實現(xiàn)此目的。請參閱此文檔。
如果您正在尋找可以直接使用此格式的庫,我建議嘗試moment.js。事實上,這是默認格式,因此您可以簡單地執(zhí)行以下操作:
var m = moment(); // get "now" as a moment var s = m.format(); // the ISO format is the default so no parameters are needed // sample output: 2013-07-01T17:55:13-07:00
這是一個經(jīng)過充分測試的跨瀏覽器解決方案,并且具有許多其他有用的功能。
這是一個簡單的輔助函數(shù),可以為您格式化 JS 日期。
function toIsoString(date) { var tzo = -date.getTimezoneOffset(), dif = tzo >= 0 ? '+' : '-', pad = function(num) { return (num