javascript - 如何使用 date-fns-tz 检测时区缩写?

标签 javascript timezone momentjs date-formatting date-fns

我要打印 时区缩写 如:IST、UTC、PST、MST、CST、EST 等...
我正在将我的代码从 momentJS 迁移到 date-fns 并遇到以下问题。当我使用 momentJS 时,一切都按预期工作。例如,下面的代码将打印“ IST

const timeZone = 'Asia/Calcutta';
moment.tz(new Date(), timeZone).format('z'); // IST
Demo using MomentJS
现在我的代码使用 日期-fns 有效,但并非一直有效,因为它会打印 《印度标准时间》我只想打印 IST .
format(parisDate, 'zzzz', { timeZone: 'Asia/Calcutta', locale: enGB }); // India Standard Time
谁能告诉我我错过了什么或做错了什么?
这是我的代码的现场演示:date-fns DEMO

最佳答案

在检查了 date-fns-tz的代码事实证明,它不会自己生成时区缩写,而是使用浏览器的 Intl API。时区缩写因地区而异。
诸如“en-US”或“en-GB”之类的语言环境不包含 IST 作为时区缩写,而“en-IN”包含。
因此,您需要

import enIN from 'date-fns/locale/en-IN'
然后将其作为第 3 个参数传递给您的 format称呼
IE。
import { utcToZonedTime, format } from "date-fns-tz";
const timeZone = "Asia/Kolkata"
const zoneString = format(utcToZonedTime(new Date(), timeZone), "zzz", {
  timeZone,
  locale: enIN
});
然而,这并不能保证其他缩写(例如 CET)将适用于建议的语言环境

关于javascript - 如何使用 date-fns-tz 检测时区缩写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65416339/

相关文章:

javascript - 暂停/中断 javascript 的执行以进行调试,但仅限于某些 javascript 文件

javascript - `this` - 构造函数中的上下文不清楚

javascript - 什么将解决 WebDriverError : Connection refused error message?

linux - 为什么具有相同 UTC 偏移量的两个时区的时间戳不同?

Javascript 使用 momentjs 在时区之间进行转换

javascript - Opencart - 产品描述中插入的图片是 http 而不是 https

java - 如何将日期和时间转换为用户时区

postgresql - Postgres now() 返回 +03 时区但显示时区返回 GMT

javascript - moment.js 返回不同的时区

javascript - Moment.js 设置服务器的基准时间