javascript - 为什么 Javascript 转换时间不同?

标签 javascript date time

<分区>

这是我的两个代码:

var date1 = new Date('2017-04-23');
var date2 = new Date('April 23, 2017');

console.log(date1);
console.log(date2);

这是结果:

Sat Apr 22 2017 17:00:00 GMT-0700 (PDT)
Sun Apr 23 2017 00:00:00 GMT-0700 (PDT)

为什么 date1 显示为 22 号 17:00?

最佳答案

JavaScript 的Date 解析行为有些不可靠。似乎当您给它一个 ISO 8601 字符串(例如“2017-04-23”)时,它会将日期解释为您自己的时区,但是当您给它一个任意字符串时,它会将其解释为 UTC 日期。

由于您处于 GMT-7 时区,因此 22 日 17:00 在 UTC 中是 23 日 00:00,当您打印日期对象时,它总是会打印出来UTC 日期而不是本地化日期。

因此,总而言之,两个日期都设置为 23 日 00:00,但在不同的时区。第一个设置为 4 月 23 日 00:00 UTC-7,第二个设置为 4 月 23 日 00:00 UTC。

为了避免这种歧义,始终明确设置时区可能是个好主意。

关于javascript - 为什么 Javascript 转换时间不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43563060/

相关文章:

javascript - Unityscript动画参数UCE0001 : ';' expected

javascript - 保护本地主机 JavaScript ajax 请求

c# - 在 HTTP GET 中绑定(bind) en-GB 日期

Java:使用 TimeUnit 将秒转换为日、小时、分钟和秒

c# - 在 .net 中的特定时间做某事

java - 删除超过 x 天的文件

javascript - 从五个项目数组中找出可能组合的总数

javascript - Node.js 错误 ECONNRESET

JavaScript 使用 jQuery 循环遍历 JSON 并将 yyyy-mm-dd 转换为时间戳,添加到变量

java - SimpleDateFormat 没有正确处理 DD