date-fns 将 utc 转换为时区

Ngu*_*HCM 5 timezone node.js date-fns

我正在尝试使用 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);
Run Code Online (Sandbox Code Playgroud)

我正在使用文档中的这段代码来检查我的问题,但它没有按照文档所述打印。这是输出:

2018 年 9 月 1 日 18:01:36.386 GMT Z (GMT+0)

我不知道为什么时间部分发生了变化,但时区仍然是 UTC。它应该是:

2018 年 9 月 1 日 18:01:36.386 GMT+02:00(中欧夏令时)

注意:我只是使用此示例代码来展示我的问题

节点 14.16.0
日期-fns:2.21.3
日期-fns-tz:1.1.4

Ngu*_*HCM 3

是我的错,没有检查导入声明。一定是这样

import { format } from 'date-fns-tz';
Run Code Online (Sandbox Code Playgroud)

我用过这个:

import { format } from 'date-fns';
Run Code Online (Sandbox Code Playgroud)

在 vscode 上使用自动导入时有点混乱。