【发布时间】:2017-03-14 04:53:07
【问题描述】:
我有两个字符串 2017-03-15 (date) 和 12:26 (time)。我想从中创建一个本地化的日期对象,而不使用库。
记住现在这里是:Tue Mar 14 2017 12:26:33 GMT+0800 (AWST),如果我这样做:
new Date( date + 'T' + time )
我得到了错误的结果,因为日期被认为是 UTC:
Wed Mar 15 2017 20:26:00 GMT+0800 (AWST)
如果我使用空格:
new Date( date + ' ' + time )
结果正确:
Wed Mar 15 2017 12:26:00 GMT+0800 (AWST)
但是,这在 Safari 上不起作用(如果没有 T)。 Safari 实际上会抛出一个错误 (!)。
我意识到将字符串解析为日期取决于实现。因此,“正确”的唯一方法是:
var timeSplit = time.split(':');
var dateSplit = date.split('-');
new Date( dateSplit[0], dateSplit[1] - 1, dateSplit[2], timeSplit[ 0 ], timeSplit[ 1 ] )
但这只是。所以。丑陋的。 有没有更好的解决方案可以跨浏览器运行?
【问题讨论】:
-
没那么难看。只需将其放入一个函数中即可。
-
可能被骗 — Invalid date in safari
标签: javascript date