首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用date-fns猜测用户的时区?

如何使用date-fns猜测用户的时区?
EN

Stack Overflow用户
提问于 2019-02-06 22:05:19
回答 1查看 11.3K关注 0票数 9

我有一个要求,我需要显示用户的当地时区的时间。这需要使用date-fns来完成。

下面的代码检查当前时间,然后给定一个时区,根据该时区将其转换为本地时间。

代码语言:javascript
复制
const { formatToTimeZone } = require('date-fns-timezone')

let date = new Date()
const format = 'D.M.YYYY HH:mm:ss [GMT]Z (z)'
const output = formatToTimeZone(date, format, { timeZone: 'Asia/Calcutta' })

但是,我如何在运行中猜测用户的时区?

moment.js中,您可以使用moment.tz.guess()获得它。但是,我如何在没有moment.js和使用date-fns的情况下完成它呢

https://runkit.com/embed/835tsn9a87so

更新:我将在VueJS应用程序中使用它。因此,如果有任何其他相关的解决方案,也欢迎它们。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 03:34:18

要获取用户的IANA时区标识符,大多数现代浏览器现在支持以下内容:

代码语言:javascript
复制
Intl.DateTimeFormat().resolvedOptions().timeZone

也就是说,当您需要使用与用户本地区域不同的时区时,通常需要从date-fns-timezone使用formatToTimeZone。否则,您通常可以只使用date-fns中的format函数。

但是,在您的示例中,您还尝试使用z格式说明符来显示用户的时区缩写。这不是date-fns直接提供的,所以如果这很关键,那么您确实需要使用上面显示的Intl api获取用户的时区,并使用formatToTimeZone

但请记住,这些缩写是IANA数据记录的所有缩写,只有英文,并没有每个时区的缩写。对于那些没有这样做的,您将看到一个数字值,例如-02

此外,许多缩写可能是模棱两可的(例如IST中的I可能表示印度、以色列或爱尔兰,以及许多其他...)。因此,在大多数情况下,如果您不需要缩写,那么没有它通常会更好。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54555491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档