使用偏移值获取时区缩写
Get timezone abbreviation using offset value
使用 moment.js(带时刻时区),我想获取当前语言环境的时区缩写(例如 PST)。
var now = Date.now(); // 1423254073931
var zone = moment(now).zone(); // 480
var timezone =
如何获取时区缩写?我在文档和其他地方看到的所有示例都选择了特定区域,例如 "America/New_York"
.
根据文档,我似乎可以使用 zone.abbr(timestamp)
从 Zone Object 中获取信息,但我不确定如何访问区域对象。
标题和问题不一样。在标题中,您询问如何使用偏移量获取它——这是不可能的。有许多时区共享相同的偏移量,因此无法单独区分时区缩写和偏移量。
但是在问题中,您询问了如何获取特定时间戳的当前语言环境的缩写。
普遍的问题是,没有 fully-reliable 检测当前时区的方法。 this answer 中对此进行了讨论。所以 moment-timezone 无法确定默认加载哪个时区。
不过还有一些其他选项可用。
当前浏览器/节点
在当前的浏览器中,Date
object 的 ECMAScript Internationalization API extensions are supported on the toLocaleString
函数。如果支持,您可以这样做:
var d = new Date(); // or whatever date you have
var tzName = d.toLocaleString('en', {timeZoneName:'short'}).split(' ').pop();
在当前的浏览器中,您会得到类似“EST”的值。不过,您可能想做一些测试,因为它不适用于所有浏览器。
使用 jsTimeZoneDetect
您可以使用像 jsTimeZoneDetect 这样的脚本来猜测本地时区。 通常 正确,但不能保证。然后您可以将该值传递给 moment-timezone.
var tzName = jstz.determine().name();
var m = moment();
var abbr = m.tz(tzName).zoneAbbr(); // or .format('z')
使用moment-timezone
现在 built-in 支持时区 detection/guessing moment-timezone:
var tzName = moment.tz.guess();
var abbr = m.tz(tzName).zoneAbbr(); // or .format('z')
moment.js 的最新版本会让您猜测时区:
PR#220
例如:moment.tz.guess(); will result in 'America/New_York'
使用 moment.js(带时刻时区),我想获取当前语言环境的时区缩写(例如 PST)。
var now = Date.now(); // 1423254073931
var zone = moment(now).zone(); // 480
var timezone =
如何获取时区缩写?我在文档和其他地方看到的所有示例都选择了特定区域,例如 "America/New_York"
.
根据文档,我似乎可以使用 zone.abbr(timestamp)
从 Zone Object 中获取信息,但我不确定如何访问区域对象。
标题和问题不一样。在标题中,您询问如何使用偏移量获取它——这是不可能的。有许多时区共享相同的偏移量,因此无法单独区分时区缩写和偏移量。
但是在问题中,您询问了如何获取特定时间戳的当前语言环境的缩写。
普遍的问题是,没有 fully-reliable 检测当前时区的方法。 this answer 中对此进行了讨论。所以 moment-timezone 无法确定默认加载哪个时区。
不过还有一些其他选项可用。
当前浏览器/节点
在当前的浏览器中,Date
object 的 ECMAScript Internationalization API extensions are supported on the toLocaleString
函数。如果支持,您可以这样做:
var d = new Date(); // or whatever date you have
var tzName = d.toLocaleString('en', {timeZoneName:'short'}).split(' ').pop();
在当前的浏览器中,您会得到类似“EST”的值。不过,您可能想做一些测试,因为它不适用于所有浏览器。
使用 jsTimeZoneDetect
您可以使用像 jsTimeZoneDetect 这样的脚本来猜测本地时区。 通常 正确,但不能保证。然后您可以将该值传递给 moment-timezone.
var tzName = jstz.determine().name();
var m = moment();
var abbr = m.tz(tzName).zoneAbbr(); // or .format('z')
使用moment-timezone
现在 built-in 支持时区 detection/guessing moment-timezone:
var tzName = moment.tz.guess();
var abbr = m.tz(tzName).zoneAbbr(); // or .format('z')
moment.js 的最新版本会让您猜测时区:
PR#220
例如:moment.tz.guess(); will result in 'America/New_York'