我居住在GMT + 9,我想输入当前时区中指定的日期和时间。 Chrome版本40.0.2214.93(64位)
<input type="datetime-local" required>
但是,如果我在日期时间选择器中输入12:00 AM,
元素返回的实际值为
2015-01-30T00:00
(通过在Chrome控制台中打印出来),等于我所在时区的9:00 AM。我必须手动将9小时添加到结果中吗?由于Chrome浏览器不支持将datetime
作为输入类型,因此我无法使用datetime
作为替代类型。 最佳答案
“2015-01-30T00:00”正是您输入的内容,因此这是返回的结果。
您说“...在我所在的时区等于9:00 AM”。仅当结果使用UTC时才是正确的,而事实并非如此。根据ISO8601标准,仅当值以尾随Z
结尾(例如“2015-01-30T00:00Z”)时,才假定其采用UTC。
也许您正在将值提供给Date
构造函数?
new Date("2015-01-30T00:00")
在这种情况下,该值将被解释为UTC-但这是由于
Date
对象的古怪之处。您可以通过一些替代方法解决此问题:new Date("2015-01-30T00:00".replace('T',' ').replace('-','/'))
或者,如果您更喜欢干净的代码,请考虑使用moment.js,它没有这个怪癖:
moment("2015-01-30T00:00").toDate(); // or .format(), or other functions...