代码之家  ›  专栏  ›  技术社区  ›  asanas

如何在VueJS应用程序中使用日期fns猜测用户的时区?

  •  1
  • asanas  · 技术社区  · 6 年前

    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() . 但是没有你我怎么办 通过使用 date-fns ?

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

    1 回复  |  直到 5 年前
        1
  •  22
  •   Matt Johnson-Pint    6 年前

    为了获取用户的IANA时区标识符,大多数现代浏览器现在都支持以下功能:

    Intl.DateTimeFormat().resolvedOptions().timeZone
    

    也就是说,通常需要使用 formatToTimeZone 从…起 date-fns-timezone 当您需要使用除用户本地时区以外的其他时区时。否则,您通常可以使用 format 作用于 date-fns

    但是,在您的情况下,您也尝试使用 z 用于显示用户时区缩写的格式说明符。date fns没有直接提供这一点,因此如果这一点很关键,那么您确实需要使用上面显示的Intl api获取用户的时区,并使用 .

    请记住,这些缩略语是IANA数据记录的所有缩略语,仅为英语,并非每个时区都有缩略语。对于那些没有的,您将看到一个数值,例如 -02

    此外,许多缩写词可能模棱两可(例如 I 在里面 IST 可能是指印度、以色列或爱尔兰,以及其他许多国家。因此,在大多数情况下,如果你不需要缩写,没有它通常会更好。