Dayjs 格式,带有时区缩写,即像 moment.js 中的“z”

问题描述 投票:0回答:2

尝试从 Moment.js 迁移到 Dayjs 但我唯一无法工作的是

Timezone
缩写。

dayjs('2020-07-06T14:30:00.000-04:00').tz(dayjs.tz.guess()).format('Do MMM YYYY [at] HH:MMa z')

调用上面的内容我会期望

6th Jul 2020 at 08:07am EDT
,但目前我只是得到
z
,其中
EDT
是。

我已经添加了

utc
timezone
插件,但看不到完成这项工作所需的任何其他插件,我注意到 Dayjs 格式文档中
z
未列出,但在网上搜索时,我看到了很多人说解决方案是
format('', {timeZone})
format
不需要第二个参数??

看起来它已添加到

tz-plugin
https://github.com/iamkun/dayjs/pull/325/files#diff-cad460a5e46a2a48c59e95356c683820R195

这是一个包含问题示例的代码沙箱: https://codesandbox.io/s/hungry-knuth-r58gz

---编辑

看起来对

tz
缩写的支持已被删除:( https://github.com/iamkun/dayjs/pull/448/commits/e64c03cea79c579bcd3c4caf235b4724e56614d4

momentjs date-formatting dayjs
2个回答
29
投票

dayjs
z版本中添加了1.9.0格式化选项:https://github.com/iamkun/dayjs/pull/1069

更新最新版本并正确设置插件,应该可以工作。下面的例子:

var dayjs = require("dayjs")
var utc = require("dayjs/plugin/utc")
var timezone = require("dayjs/plugin/timezone")
var advanced = requires("dayjs/plugin/advancedFormat")

dayjs.extend(timezone)
dayjs.extend(utc)
dayjs.extend(advanced)
dayjs().tz('Europe/Paris').format('DD/MM/YYYY z')

0
投票

除了上面的答案之外,要获取时区名称,请传递三重

zzz
它将返回完整的时区名称

dayjs().tz("Europe/Paris").format("DD/MM/YYYY zzz"); // 14/12/2023 Central European Standard Time
© www.soinside.com 2019 - 2024. All rights reserved.