我住在 GMT+9,我想输入在我当前时区指定的日期和时间。Chrome 版本 40.0.2214.93(64 位)
<input type="datetime-local" required>
Run Code Online (Sandbox Code Playgroud)
但是,如果我在日期时间选择器中输入 12:00AM,

元素返回的实际值是2015-01-30T00:00(通过在 Chrome 控制台中打印出来),在我的时区等于上午 9:00。我是否必须手动将 9 小时添加到结果中?由于 Chrome 不支持datetime作为输入类型,我不能datetime用作替代。
“2015-01-30T00:00”正是您输入的内容,因此这是返回的结果。
你说“......在我的时区等于上午 9:00”。只有当结果是 UTC 时才会如此——事实并非如此。根据ISO8601标准,如果值以尾随结尾Z,例如“2015-01-30T00:00Z” ,则它只会被假定为 UTC 。
也许您正在将值输入到Date构造函数中?
new Date("2015-01-30T00:00")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,该值将被解释为 UTC - 但这是由于Date对象的一个怪癖。您可以通过一些替换来解决此问题:
new Date("2015-01-30T00:00".replace('T',' ').replace('-','/'))
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢更简洁的代码,请考虑使用moment.js,它没有那个怪癖:
moment("2015-01-30T00:00").toDate(); // or .format(), or other functions...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14762 次 |
| 最近记录: |