簡體   English   中英

Javascript中特定日期的時區名稱的時區偏移量

[英]Timezone offset by timezone name for a specific date in Javascript

如何使用特定日期的時區名稱以小時或分鍾為單位查找時區偏移量。

示例用途是:

var offset = findOffset("America/New_York", new Date(2019,08,07))
// offset is -4

我希望找到使用本機 JS 的解決方案,但如果它不存在,我也可以使用一些庫。

我會推薦Moment Timezone ,它是一個 JS 庫,它非常流行(3,660,521 周 NPM 下載量)。 Moment 和 Moment Timezone 是兄弟庫(同一開發人員)。

時刻時區庫為您提供輸出中的偏移量,如下所示:

moment.tz("2013-12-01", "America/Los_Angeles").format(); // 2013-12-01T00:00:00-08:00

moment.tz("2013-06-01", "America/Los_Angeles").format(); // 2013-06-01T00:00:00-07:00

所以這是我找到的答案

const findTimeZoneOffset = (tz,date) => {
  let utcDate = new Date(date.toLocaleString('en-US', { timeZone: "UTC" }));
  let tzDate = new Date(date.toLocaleString('en-US', { timeZone: tz }));
  let diff = ( tzDate.getTime() - utcDate.getTime() ) / 1000 / 60 / 60;
  return diff;
};

正如預期的那樣

findTimeZoneOffset("America/New_York", new Date(2019,08,07))
// returns -4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM