如何用date-fns格式化UTC日期并保留正确日期而非本地时间?
解决date-fns格式化UTC日期显示偏移的问题
直接使用date-fns提供的formatUTC方法即可,它会强制以UTC时区来格式化日期,避免本地时区转换导致的日期偏移。
具体修改方案:
- 替换原代码中的
format为formatUTC:formatUTC(new Date(job.active_range_start), "MMM dd, yyyy") - 也可以结合
parseISO解析字符串(效果一致):import { formatUTC, parseISO } from 'date-fns'; formatUTC(parseISO(job.active_range_start), "MMM dd, yyyy")
原理说明:
你的job.active_range_start是'2022-11-08T00:00:00.000Z',这是UTC时区的当天零点。普通的format方法默认使用本地时区解析,所以会转成你所在的GMT-0500时区的前一天19:00,导致显示Nov 07, 2022。而formatUTC会直接以UTC时区处理这个时间点,自然就能得到正确的Nov 08, 2022。
内容的提问来源于stack exchange,提问作者Tsar Bomba
相关产品推荐
相关产品推荐

