亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

如何在 JavaScript 中使用 ISO 8601 格式化帶有時區(qū)偏移的日期?
P粉054616867
P粉054616867 2024-03-25 15:40:11
0
2
1109

目標(biāo):找到本地時間UTC時間偏移,然後按以下格式建構(gòu)URL。

範(fàn)例 URL:/Actions/Sleep?duration=2002-10-10T12:00:00?05:00

該格式基於 W3C 推薦。文檔說:

例如,2002-10-10T12:00:00?05:00(2002 年 10 月 10 日中午, 中部夏令時以及美國東部標(biāo)準(zhǔn)時間) 等於 2002-10-10T17:00:00Z,比 2002-10-10T12:00:00Z 晚五小時。

因此,根據(jù)我的理解,我需要透過new Date() 來尋找本地時間,然後使用getTimezoneOffset() 函數(shù)計算差異,然後將其附加到字串末尾。

  1. 使用 format 取得當(dāng)?shù)貢r間

    var local = new Date().format("yyyy-MM-ddThh:mm:ss"); // 2013-07-02T09:00:00
  2. 取得 UTC 時間偏移

    var offset = local.getTimezoneOffset() / 60; // 7
  3. 建構(gòu) URL(僅限時間部分)

    var duration = local + "-" + offset + ":00"; // 2013-07-02T09:00:00-7:00

上面的輸出意味著我的當(dāng)?shù)貢r間是2013年7月2日上午9點,與UTC相差7個小時(UTC比當(dāng)?shù)貢r間早7個小時)

到目前為止,它似乎有效,但是如果 getTimezoneOffset() 傳回負值(例如 -120)怎麼辦?

我想知道在這種情況下格式應(yīng)該是什麼樣子,因為我無法從 W3C 文件中弄清楚。

P粉054616867
P粉054616867

全部回覆(2)
P粉842215006

getTimezoneOffset() 傳回您所引用的規(guī)格所需格式的相反符號。

此格式也稱為 ISO8601,或更準(zhǔn)確地說是 RFC3339。

在此格式中,UTC 以 Z 表示,而所有其他格式均由 UTC 的偏移表示。意義與 JavaScript 相同,但減法的順序相反,因此結(jié)果帶有相反的符號。

此外,本地 Date 物件上沒有名為 format 的方法,因此 #1 中的函數(shù)將失敗,除非您使用函式庫來實現(xiàn)此目的。請參閱此文件。

如果您正在尋找可以直接使用此格式的庫,我建議嘗試moment.js。事實上,這是預(yù)設(shè)格式,因此您可以簡單地執(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)過充分測試的跨瀏覽器解決方案,並且具有許多其他有用的功能。

P粉545956597

這是一個簡單的輔助函數(shù),可以為您格式化 JS 日期。

function toIsoString(date) {
  var tzo = -date.getTimezoneOffset(),
      dif = tzo >= 0 ? '+' : '-',
      pad = function(num) {
          return (num 
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板