如何解决date-fns 将 UTC 转换为时区
我正在尝试使用 Nodejs 中的 date-fns 将 UTC 时间解析为时区
const date = new Date('2018-09-01T16:01:36.386Z');
const timeZone = 'Europe/Berlin';
const zonedDate = utcToZonedTime(date,timeZone);
// zonedDate could be used to initialize a date picker or display the formatted local date/time
// Set the output to "1.9.2018 18:01:36.386 GMT+02:00 (CEST)"
const pattern = "d.M.yyyy HH:mm:ss.SSS 'GMT' XXX (z)";
const output = format(zonedDate,pattern,{ timeZone: 'Europe/Berlin' });
console.log(output);
我正在使用文档中的此代码来检查我的问题,但它没有像文档所说的那样打印。 这是输出:
1.9.2018 18:01:36.386 GMT Z (GMT+0)
我不知道为什么更改了时间部分,但时区仍然是 UTC。应该是:
1.9.2018 18:01:36.386 GMT+02:00 (CEST)
注意:我只是用这个示例代码来展示我的问题
节点 14.16.0
日期-fns:2.21.3
日期-fns-tz:1.1.4
解决方法
没有检查导入语句是我的错。应该是
import { format } from 'date-fns-tz';
我用过这个:
import { format } from 'date-fns';
在 vscode 上使用自动导入时有点混乱。
,我得到了所需的输出(或非常相似),我想知道为什么您会看到 GMT Z (GMT+0) 的时区。在我看来,这与您的操作系统/环境有关。
const { zonedTimeToUtc,utcToZonedTime,format } = require('date-fns-tz')
const os = require('os');
const date = new Date('2018-09-01T16:01:36.386Z');
const timeZone = 'Europe/Berlin';
const zonedDate = utcToZonedTime(date,timeZone);
// zonedDate could be used to initialize a date picker or display the formatted local date/time
// Set the output to "1.9.2018 18:01:36.386 GMT+02:00 (CEST)"
const pattern = "d.M.yyyy HH:mm:ss.SSS 'GMT' XXX (z)";
const output = format(zonedDate,pattern,{ timeZone: 'Europe/Berlin' });
console.log(output);
console.log("Node version:",process.version)
console.log("Os:",os.version() + " - " + os.release())
我看到的输出是:
1.9.2018 18:01:36.386 GMT +02:00 (GMT+2)
Node version: v14.15.5
Os: Windows 10 Pro - 10.0.19041
这是在 Windows 机器上。
软件包版本为:
"date-fns": "^2.21.3","date-fns-tz": "^1.1.4"
在 Ubuntu (replit.com) 上尝试我看到以下内容:
1.9.2018 18:01:36.386 GMT +02:00 (GMT+2)
Node version: v12.22.1
Os: #45-Ubuntu SMP Tue Apr 13 01:44:53 UTC 2021 - 5.4.0-1042-gcp
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。