【发布时间】:2021-04-01 14:35:37
【问题描述】:
我想打印timeZone abbreviation,例如:IST、UTC、PST、MST、CST、EST 等...
我正在将我的代码从 momentJS 迁移到 date-fns 并遇到以下问题。当我使用 momentJS 时,一切都按预期工作。例如,下面的代码将打印“IST”
const timeZone = 'Asia/Calcutta';
moment.tz(new Date(), timeZone).format('z'); // IST
现在我使用 date-fns 的代码可以工作,但不是一直有效,因为它会打印 "India Standard Time" 而我只想打印 IST强>。
format(parisDate, 'zzzz', { timeZone: 'Asia/Calcutta', locale: enGB }); // India Standard Time
谁能告诉我我错过了什么或做错了什么? 这是我的代码的现场演示:date-fns DEMO
【问题讨论】:
-
有趣的问题。我找到了解决方案,但无法解释原因...您应该导入不同的语言环境(默认为 en-US)。导入
import enGB from 'date-fns/locale/en-GB',然后在您的示例中更改为const zoneString = format(utcToZonedTime(new Date(), timeZone), 'zzz', {locale: enGB});即可完成这项工作。但是,我无法理解为什么时区缩写与图书馆的语言环境相关联。我会阅读文档,也许会上传一个正确的答案。 -
@antoniom 我导入了您的建议并进行了更改,但它会打印“GMT+5:30”。它不起作用
-
奇怪...适合我...看看这里github.com/marnusw/date-fns-tz#format
-
@antoniom 你是在打印“印度标准时间”还是 IST”?我想打印“IST”
-
请使用“en-IN”作为区域设置再次重试。并将date-fns升级到最新版本(2.16.1)
标签: javascript timezone momentjs date-formatting date-fns