尝试从 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
在
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')
除了上面的答案之外,要获取时区名称,请传递三重
zzz
它将返回完整的时区名称
dayjs().tz("Europe/Paris").format("DD/MM/YYYY zzz"); // 14/12/2023 Central European Standard Time