簡體   English   中英

獲取日期時刻時區的時區

[英]Get timezone of date moment-timezone

如何使用moment-timezone.js獲取在日期上設置moment-timezone.js 我想知道是否有一種方法可以像這樣使用它

moment(date).tz().name()

您可以使用moment.tz()獲取時區全名。 如果未設置時區,它將返回undefined

例子:

var date = moment.tz("2017-03-09 01:59:59", "America/New_York");
date.tz();

這將返回:

America/New_York

此外,您可以使用moment.format('zz')來獲取短時區名稱。

不是一個非常優雅的解決方案,但想分享我如何解決這個問題:

我有一個包含所有時區名稱的對象:

const tzs = {
    "American Samoa": "-1100",
    "International Date Line West": "-1100",
    "Midway Island": "-1100",
    "Hawaii": "-1000",
    "Alaska": "-0900",
    "Pacific Time (US & Canada)": "-0800",
    "Tijuana": "-0800",
    "Arizona": "-0700",
    "Chihuahua": "-0700",
    "Mazatlan": "-0700",
    "Mountain Time (US & Canada)": "-0700",
    "Central America": "-0600",
    "Central Time (US & Canada)": "-0600",
    "Guadalajara": "-0600",
    "Mexico City": "-0600",
    "Monterrey": "-0600",
    "Saskatchewan": "-0600",
    "Bogota": "-0500",
    "Eastern Time (US & Canada)": "-0500",
    "Indiana (East)": "-0500",
    "Lima": "-0500",
    "Quito": "-0500",
    "Caracas": "-0430",
    "Atlantic Time (Canada)": "-0400",
    "Georgetown": "-0400",
    "La Paz": "-0400",
    "Santiago": "-0400",
    "Newfoundland": "-0330",
    "Brasilia": "-0300",
    "Buenos Aires": "-0300",
    "Greenland": "-0300",
    "Mid-Atlantic": "-0200",
    "Azores": "-0100",
    "Cape Verde Is.": "-0100",
    "Casablanca": "+0000",
    "Dublin": "+0000",
    "Edinburgh": "+0000",
    "Lisbon": "+0000",
    "London": "+0000",
    "Monrovia": "+0000",
    "UTC": "+0000",
    "Amsterdam": "+0100",
    "Belgrade": "+0100",
    "Berlin": "+0100",
    "Bern": "+0100",
    "Bratislava": "+0100",
    "Brussels": "+0100",
    "Budapest": "+0100",
    "Copenhagen": "+0100",
    "Ljubljana": "+0100",
    "Madrid": "+0100",
    "Paris": "+0100",
    "Prague": "+0100",
    "Rome": "+0100",
    "Sarajevo": "+0100",
    "Skopje": "+0100",
    "Stockholm": "+0100",
    "Vienna": "+0100",
    "Warsaw": "+0100",
    "West Central Africa": "+0100",
    "Zagreb": "+0100",
    "Zurich": "+0100",
    "Athens": "+0200",
    "Bucharest": "+0200",
    "Cairo": "+0200",
    "Harare": "+0200",
    "Helsinki": "+0200",
    "Istanbul": "+0200",
    "Jerusalem": "+0200",
    "Kyiv": "+0200",
    "Pretoria": "+0200",
    "Riga": "+0200",
    "Sofia": "+0200",
    "Tallinn": "+0200",
    "Vilnius": "+0200",
    "Baghdad": "+0300",
    "Kuwait": "+0300",
    "Minsk": "+0300",
    "Moscow": "+0300",
    "Nairobi": "+0300",
    "Riyadh": "+0300",
    "St. Petersburg": "+0300",
    "Volgograd": "+0300",
    "Tehran": "+0330",
    "Abu Dhabi": "+0400",
    "Baku": "+0400",
    "Muscat": "+0400",
    "Tbilisi": "+0400",
    "Yerevan": "+0400",
    "Kabul": "+0430",
    "Ekaterinburg": "+0500",
    "Islamabad": "+0500",
    "Karachi": "+0500",
    "Tashkent": "+0500",
    "Chennai": "+0530",
    "Kolkata": "+0530",
    "Mumbai": "+0530",
    "New Delhi": "+0530",
    "Sri Jayawardenepura": "+0530",
    "Kathmandu": "+0545",
    "Almaty": "+0600",
    "Astana": "+0600",
    "Dhaka": "+0600",
    "Novosibirsk": "+0600",
    "Urumqi": "+0600",
    "Rangoon": "+0630",
    "Bangkok": "+0700",
    "Hanoi": "+0700",
    "Jakarta": "+0700",
    "Krasnoyarsk": "+0700",
    "Beijing": "+0800",
    "Chongqing": "+0800",
    "Hong Kong": "+0800",
    "Irkutsk": "+0800",
    "Kuala Lumpur": "+0800",
    "Perth": "+0800",
    "Singapore": "+0800",
    "Taipei": "+0800",
    "Ulaanbataar": "+0800",
    "Osaka": "+0900",
    "Sapporo": "+0900",
    "Seoul": "+0900",
    "Tokyo": "+0900",
    "Yakutsk": "+0900",
    "Adelaide": "+0930",
    "Darwin": "+0930",
    "Brisbane": "+1000",
    "Canberra": "+1000",
    "Guam": "+1000",
    "Hobart": "+1000",
    "Magadan": "+1000",
    "Melbourne": "+1000",
    "Port Moresby": "+1000",
    "Solomon Is.": "+1000",
    "Sydney": "+1000",
    "Vladivostok": "+1000",
    "New Caledonia": "+1100",
    "Auckland": "+1200",
    "Fiji": "+1200",
    "Kamchatka": "+1200",
    "Marshall Is.": "+1200",
    "Wellington": "+1200",
    "Nuku’alofa": "+1200",
    "Samoa": "+1200",
    "Tokelau Is.": "+1300"
}

我有一個函數來獲取所有可能的時區列表:

const getAllTzs = utcOffset => {
  let allTzs = []
  for (var tzName in tz){
    if (tz[tzName] == utcOffset) {allTzs.push(tzName)}
  }
  return allTzs
}

我是這樣稱呼它的:

let tzArray = getAllTzs(moment().format('ZZ'))

給我一個匹配時區的所有名稱的數組。

MomentJS TZ 站點中的文檔似乎很不錯

https://momentjs.com/timezone/docs/#/using-timezones/converting-to-zone/

沒有參數,moment#tz 返回:

分配給時刻實例的時區名稱,如果尚未設置時區,則未定義。

var m = moment.tz("2013-11-18 11:55", "America/Toronto");
m.tz();  // America/Toronto

暫無
暫無

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

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