如果现在在我的devtools控制台中,我输入:
new Date('2018-12-29')
它返回:
Fri Dec 28 2018 16:00:00 GMT-0800 (Pacific Standard Time)
为什么会发生这种情况?解决此问题的正确方法是什么?
这与时区有关吗?我如何确保它对我的所有用户均正常工作?
答案 0 :(得分:2)
如果至少提供了两个参数,则缺少一个参数 设置为1(如果缺少日期)或设置为0(所有其他日期)
也来自dateString parameter description in the docs:
使用Date构造函数(和Date.parse, 它们是等效的),因此强烈建议不要使用浏览器 差异和矛盾之处。支持RFC 2822格式字符串 仅按照惯例。对ISO 8601格式的支持不同之处在于 仅日期的字符串(例如“ 1970-01-01”)被视为UTC,而不是本地
由于您要传递ISO 8601格式的字符串,并且日期字符串中没有时间元素,因此它将用零填充这些参数,并在UTC中创建日期对象,例如2018-12-29T00:00:00.000Z
,然后浏览器将其转换为您的本地时间,在您的情况下,该时间比太平洋时区的前一天晚了8个小时。