为了账号安全,请及时绑定邮箱和手机立即绑定

使用 luxon 检测时区缩写

使用 luxon 检测时区缩写

四季花海 2022-09-02 21:31:50
具有短时区缩写的矩时区结果,例如moment.tz([2012, 0], 'America/New_York').format('z');    // EST moment.tz([2012, 5], 'America/New_York').format('z');    // EDT有没有类似的方法可以使用luxon来实现这一点我试过了,但是,它的结果就像约会一样offsetNameShortGMT+5:30"2020-05-23T13:30:00+05:30"类似的东西也不起作用DateTime.fromISO(""2020-05-23T13:30:00+05:30"").toFormat('z')有没有办法从格式中删除时区?+5:30
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

查看 Luxon 的格式化标记表。您需要缩写的命名偏移量。ZZZZ


例子:


DateTime.fromObject({year: 2012, month: 1, zone: 'America/New_York'})

  .toFormat('ZZZZ') //=> "EST"


DateTime.fromObject({year: 2012, month: 6, zone: 'America/New_York'})

  .toFormat('ZZZZ') //=> "EDT"


DateTime.local()

  .toFormat('ZZZZ') //=> "PDT"  (on my computer)


DateTime.fromISO("2020-05-23T13:30:00+05:30", {zone: 'Asia/Kolkata', locale: 'en-IN'})

  .toFormat('ZZZZ') //=> "IST"

请注意,在最后一个中,您还必须指定为区域设置才能获得 .否则,您将获得 ,除非系统区域设置已经是 。这是因为Luxon依赖于浏览器的国际化API,而后者又从CLDR获取其数据。en-INISTGMT+05:30en-IN


在 CLDR 中,许多名称和缩写被指定为特定于给定的区域设置,而不是在全球范围内使用。除非区域设置是 ,否则 get 而不是 也会遇到同样的情况。(我个人不同意这一点,但这就是目前实现的方式。Europe/LondonGMT+1BSTen-GB


查看完整回答
反对 回复 2022-09-02
?
森栏

TA贡献1810条经验 获得超5个赞

只需简单使用


const shortDate = new Date().toLocaleTimeString('en-us',{timeZoneName:'short'});

console.log(shotrDate.split(' ')[2]); // EST


查看完整回答
反对 回复 2022-09-02
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信