javascript的不同行为';s新日期(字符串)
A在格式为yyyy MM ddTHH:MM:ss的字符串上有日期 我需要创建一个javascript日期对象,所以我这样做了javascript的不同行为';s新日期(字符串),javascript,date,Javascript,Date,A在格式为yyyy MM ddTHH:MM:ss的字符串上有日期 我需要创建一个javascript日期对象,所以我这样做了 var d=新日期('2017-07-01T00:38:00') 创建的对象是 Sat Jul 01 2017 00:38:00 GMT+0100 (GMT Daylight Time) 这就是我所期望的,也是在我桌面上的Chrome(V59.0.3071.115)上发生的事情 当我在我的android手机上运行相同的代码时,Chrome版本为51.0.2704.81,
var d=新日期('2017-07-01T00:38:00')
创建的对象是
Sat Jul 01 2017 00:38:00 GMT+0100 (GMT Daylight Time)
这就是我所期望的,也是在我桌面上的Chrome(V59.0.3071.115)上发生的事情
当我在我的android手机上运行相同的代码时,Chrome版本为51.0.2704.81,结果是
Sat Jul 01 2017 01:38:00 GMT+0100 (GMT Daylight Time)
正如你所看到的,由于我所在的时区不同,时间也不同
上述行为是否属于预期行为?这是Chrome版本的问题吗?在我的搜索中,我了解到带有字符串日期的日期构造函数会产生意外的结果,但是我可以独立于浏览器依赖于常量行为吗
编辑 它不是重复的,因为在Firefox上,我得到了与Chrome v59相同的结果,datetime被解释为本地日期,而不是UTC(这是我想要的) 编辑2 在“据称”重复的问题上,“询问者”的目标是
新日期()
将插入的日期视为UTC,并对用户本地时间进行必要的转换。
我想要的是newdate()
将插入的日期作为本地日期处理,而不进行任何转换。这是我在最近的浏览器(Chrome,Firefox)上看到的行为,但在旧版本的Chrome(Android,v51)上没有。
因此,如果用户位于偏移量为+01:00的时区,如果我设置新日期('2017-07-01T00:38:00')
结果应该是2017年7月1日星期六00:38:00 GMT+0100
编辑3
刚刚检查了如果我使用构造函数新日期(2017,06,01,0,38,0)
该日期被解释为本地日期(它显示2017年7月1日星期六00:38:00 GMT+0100(GMT夏令时)
在两个版本的chrome上……是否有任何文档可以确保始终被解释为本地日期?中有一个bug
Chrome实现了规范中的字面意思,并将Chrome 35中的Date
行为替换为您应该期望的行为
在(ECMAScript 5.1)上:
Z
是指定为“Z”(UTC)或“+”或“-”后跟时间表达式HH:mm的时区偏移量
[……]
缺少时区偏移的值为“Z”
关于(固定的):
如果没有时区偏移,则仅日期表单将解释为UTC时间,日期时间表单将解释为本地时间
里面有一个bug
Chrome实现了规范中的字面意思,并将Chrome 35中的Date
行为替换为您应该期望的行为
在(ECMAScript 5.1)上:
Z
是指定为“Z”(UTC)或“+”或“-”后跟时间表达式HH:mm的时区偏移量
[……]
缺少时区偏移的值为“Z”
关于(固定的):
如果没有时区偏移,则仅日期表单将解释为UTC时间,日期时间表单将解释为本地时间
尝试在日期/时间字符串的末尾添加一个
Z
。如var d=new date('2017-07-01T00:38:00Z')
。它看起来像一个副本,但在同一个浏览器上(chrome)但是在不同的版本上。添加Z
并不能解决问题…尝试在日期/时间字符串的末尾添加Z
。如var d=new date('2017-07-01T00:38:00Z')
。它看起来像是一个副本,但在同一个浏览器上(chrome)但在不同的版本上,添加Z
并不能解决问题……根据您的回答,在Chrome 51上,这个日期时间应该被解释为本地时间,但它被解释为UTCMany会说ed 5.1通过与ISO 8601保持一致而正确,而当前的规范是错误的。现在,它与ISO 8601最为一致根据你的回答,在Chrome 51上,这个日期时间应该被解释为本地时间,但它被解释为UTCMany会说ed 5.1通过与ISO 8601一致而正确,而当前的规范是错误的。现在,它与ISO 8601基本一致,但仅日期形式是一个例外离子。