使用date-fns将日期解析为UTC格式2022-07-20T00:00:00.000Z的问题
解决日期解析时区偏移问题
你遇到的问题确实是时区导致的:parse方法默认按本地时区解析日期字符串,你的时区为UTC+3,所以本地时间2022-07-20 00:00:00对应的UTC时间就是2022-07-19 21:00:00,因此toISOString()输出的是UTC标准时间。
要得到目标格式2022-07-20T00:00:00.000Z,可以用以下两种方案:
方案一:使用date-fns的parseUTC方法
如果你用的是date-fns库,直接替换为parseUTC(按UTC时区解析日期)即可:
const { parseUTC } = require('date-fns'); const main = () => { const day = '2022-07-20'; const result = parseUTC(day, 'yyyy-MM-dd', new Date()); console.log(result.toISOString()); // 输出:2022-07-20T00:00:00.000Z };
方案二:直接通过Date构造函数解析
ES标准规定,YYYY-MM-DD格式的字符串会被Date构造函数按UTC时区解析,无需额外库:
const main = () => { const day = '2022-07-20'; const result = new Date(day); console.log(result.toISOString()); // 输出:2022-07-20T00:00:00.000Z };
注意:如果日期格式是YYYY/MM/DD或其他非ISO标准格式,Date构造函数会按本地时区解析,此时建议用方案一。
内容的提问来源于stack exchange,提问作者Rusty Gold
相关产品推荐
相关产品推荐

