HTML输入类型日期和时间没有时区偏移

eul*_*ode 9 javascript html5 angularjs ionic-framework

我正在使用HTML5输入日期和输入时间进行离子开发.默认情况下,它绑定为ISO Date String并更改为UTC日期时间.我认为当用户选择2016-06-06日期时,它可能已成为2016-06-07或2016-06-05,具体取决于时区偏移.输入类型=时间的类似情况.

我的目的是使ISO字符串中的日期保持为用户选择的而不是使用时区差异来抵消它.

像输入datetime-local之类的东西,但似乎移动设备不支持datetime-local.

我发现输入类型="日期本地"或"时间本地".

Sid*_*dex 5

首先,有趣的是,已将type =“ datetime” 从HTML5标准中删除,而只存在“ datetime-local”,但似乎并不是每个移动浏览器都实现它。对于type =“ date”,它没有时间成分,因此直接使用UTC日期即可。的确,将UTC日期d转换为本地有点荒谬:

  • 新日期(d.toLocaleDateString())

要么

  • d.setMinutes(d.getMinutes()+d.getTimezoneOffset())

要么

  • new Date(+d+d.getTimezoneOffset()*60000)

但你能做什么呢?

  • 直接使用 UTC 日期可能会导致意外结果,即使使用 type="date" 也是如此。用户可以选择特定的一天(以 UTC 时间表示),应用程序可能会将其解释为前一天,因为用户可能输入了诸如“2019 年 1 月 30 日星期三 00:00:00 GMT-0200”之类的日期。 (2认同)

mar*_*ard -5

JavaScript 日期始终为 UTC,但您可以获取本地值,如下所示: http: //www.w3schools.com/jsref/jsref_obj_date.asp

getUTCHours() 根据通用时间返回小时(从 0-23) getHours() 返回小时(从 0-23)

第一个始终会根据输入的内容转换为 UTC。第二个将使用时区偏移量来计算应返回的内容。