【发布时间】:2017-01-25 19:13:18
【问题描述】:
我正在使用以下逻辑将 UTC 日期时间(以这种格式来自服务器 2017-01-25T23:08:08.453)转换为使用 JavaScript 在浏览器上的本地日期时间(不要求用户输入他的时区详细信息并假设客户端上的系统日期时间/时区机器是对的)。
var jsDate = new Date(do.createdAt);
var jsDate = new Date(jsDate.getTime() - jsDate.getTimezoneOffset() * 60000);
登录在 IE 中似乎工作正常,但在 chrome 中我得到不同的结果。
Execute this fiddle 在 IE 和 Chrome 中查看不同的结果。
如果我使用 moment.js,我会在 IE 和 chrome 中得到正确的结果:
moment.utc(do.createdAt).toDate();
但我不想引入额外的依赖。
我查看了关于 SO 的多个相关帖子,但每个帖子都有多个 cmets 指出每种方法的缺点。
假设客户端机器上的本地时区正确,最好的方法是什么。
【问题讨论】:
-
在不知道 do.createdAt 的值的情况下说不出来。但是,如果它是一个 ISO 8601 扩展格式字符串,例如“2017-01-25T12:00:00+0000”,那么它应该被正确解析(通过与 ECMAScript ed 5 及更高版本一致的浏览器),无需进一步帮助。
-
@RobG:我从服务器
2017-01-25T23:08:08.453获取这种格式的日期 -
@RobG:更新了问题并包含了小提琴
标签: javascript jquery date datetime