根据 ECMA-262 ed 3,对时间的解析可能有不同处理方式。
在 ES5 中,对 ISO 8601 格式的字符串,如果没有指定时区,则解析为 UTC,对非 ISO 8601 的处理没有统一行为。
在 ES2015 中,对没有指定时区的字符串解析为当地时间(根据系统时间)。
如果你希望把所有这种形式的字符串都处理为当地时间,可以自己写个函数:
function parseISOLocal (s) {
var b = s.split(/\D/);
return new Date(b[0], b[1]-1, b[2]);
}
export const parseISOLocal = (s:any) => {
const date = new Date(s);
if(date.getHours()>0){
date.setHours(date.getHours() + date.getTimezoneOffset() / 60);
}
let str = new Date(date).getTime();
console.log(str,new Date(str),s,date);
return str;
}
本文探讨了ECMA-262标准下,JavaScript对ISO8601格式时间字符串的解析规则变化,从ES5到ES2015的不同处理方式,并提供了一个自定义函数用于统一解析为当地时间。
7140

被折叠的 条评论
为什么被折叠?



