问题

看起来当我使用format()函数时,它将自动将原始UTC时间转换为我的时区(UTC + 8)。我一直在研究他们的文档数小时,似乎找不到找到将其默认为UTC时间的方法。

import { parseISO, format } from "date-fns";

const time = "2019-10-25T08:10:00Z";

const parsedTime = parseISO(time);
console.log(parsedTime); // 2019-10-25T08:10:00.000Z

const formattedTime = format(parsedTime, "yyyy-MM-dd kk:mm:ss");
console.log(formattedTime); // 2019-10-25 16:10:00 <-- 8 HOURS OFF!!

我尝试使用data-fns-tz包并使用类似

format(parsedTime, "yyyy-MM-dd kk:mm:ss", {timeZone: "UTC"});

仍然没有运气。

请帮忙!

预期产量
2019-10-25 08:10:00
实际产量
2019-10-25 16:10:00

最佳答案

我建议使用内置的Date util:

const date = new Date("2019-10-25T08:10:00Z");
const isoDate = date.toISOString();

console.log(`${isoDate.substr(0, 10)} ${isoDate.substr(11, 8)}`);

输出:
2019-10-25 08:10:00
不是任何格式的通用解决方案,但不需要外部库。

09-17 15:58
查看更多