HTML5 datetime-local (Chrome): 如何输入当前时区的日期时间
HTML5 datetime-local (Chrome): How to input datetime in current time zone
我住在 GMT+9,我想输入我当前时区指定的日期和时间。 Chrome 版本 40.0.2214.93(64 位)
<input type="datetime-local" required>
但是,如果我在日期时间选择器中输入 12:00AM,
元素 returns 的实际值是 2015-01-30T00:00
(通过在 Chrome 控制台打印出来),在我的时区等于 9:00AM。我是否必须手动将 9 小时添加到结果中?由于 Chrome 不支持 datetime
作为输入类型,我无法使用 datetime
作为替代。
“2015-01-30T00:00”正是您输入的内容,因此这就是返回的结果。
你说“...在我的时区等于 9:00AM”。仅当结果为 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...
我住在 GMT+9,我想输入我当前时区指定的日期和时间。 Chrome 版本 40.0.2214.93(64 位)
<input type="datetime-local" required>
但是,如果我在日期时间选择器中输入 12:00AM,
元素 returns 的实际值是 2015-01-30T00:00
(通过在 Chrome 控制台打印出来),在我的时区等于 9:00AM。我是否必须手动将 9 小时添加到结果中?由于 Chrome 不支持 datetime
作为输入类型,我无法使用 datetime
作为替代。
“2015-01-30T00:00”正是您输入的内容,因此这就是返回的结果。
你说“...在我的时区等于 9:00AM”。仅当结果为 UTC 时才会如此——但事实并非如此。根据 ISO8601 标准,如果值以尾随 Z
结尾,例如“2015-01-30T00:00Z”.
也许您正在将值输入 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...