问题
看起来当我使用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
不是任何格式的通用解决方案,但不需要外部库。