需要帮助才能完全从ISO日期字符串转换为日期:
我有一个ISO字符串日期:“2016-01-23T22:23:32.927”。
但是,当我使用NULL
转换日期时,结果是错误的:
new Date(dateString)
结果是:var date = new Date("2016-01-23T22:23:32.927");
。这不是真的。我希望日期是23而不是24。
请帮帮我。非常感谢!
答案 0 :(得分:0)
您需要使用iso日期提供时区偏移量。由于没有一个,它假定日期为GMT,当您将其注销时,它会在浏览器的时区中打印出来。我认为,如果您将"2016-01-23T22:23:32.927+07:00"
传递给new Date()
,您将获得您期望的价值。
答案 1 :(得分:0)
JavaScript环境(浏览器,节点,...)使用单个时区将日期格式化为字符串。通常这是您系统的时区。根据你得到的输出,你的是GMT + 0700。
发生了什么:
Date
构造函数的字符串不指定时区。在这种情况下,它被视为UTC。console.log
),它将转换为您环境的时区。在这种情况下,添加了7个小时。如果这不适合您,您可以更改输出日期的方式。这取决于您想要的输出,例如:
date.toISOString()
。date.getTimezoneOffset()
并找出两个时区之间的差异。然后,您可能需要获取各个日期部分并相应地添加/减去时区差异。此时,您可以考虑使用现有的库,同时考虑到它们可能存在的缺点。答案 2 :(得分:-1)
使用datepicker
当它将日期对象转换为字符串时,它会给你23而不是24,根据世界时间
答案 3 :(得分:-2)
如果您愿意并且能够添加依赖项,我建议您使用moment.js。它使Javascript中的日期处理更简单,更安全,并且可以立即修复您的特定问题。
为此,首先从CDN加载它,例如, Moment.JS 2.14.1 minified。然后按如下方式使用它:
var date = moment("2016-01-23T22:23:32.927");
console.log(date);
// output: Sat Jan 23 2016 22:23:32 GMT-0500
...即。你想要的结果:))