【问题标题】:Javascript/Json date conversion issueJavascript/Json 日期转换问题
【发布时间】:2015-05-30 11:04:20
【问题描述】:

我有以下 Java Script (Json) 日期格式

data.d1: "2015-03-26T16:00:00.0000000"

我执行以下操作

data.d1 = new Date(data.d1);

它给出了以下对我来说是错误的结果。

Thu Mar 26 2015 20:00:00 GMT+0400 (Arabian Standard Time)

它应该返回

Thu Mar 26 2015 16:00:00 GMT+0400 (Arabian Standard Time)

为什么会有 4 小时的时差? 我怎样才能获得相同的时间(默认时间没有 4 小时)? 请给点提示

附言我可以通过使用以下代码行来获得准确的时间

data.d1.setHours(data.d1.getHours() - 4);

这是唯一的方法吗?

【问题讨论】:

  • 它将字符串解释为 UTC。
  • 我编辑了我的问题,请看看我的解决方法。
  • 我收到来自印度的Thu Mar 26 2015 21:30:00 GMT+0530 (IST)。所以@DanielA.White 是对的,我相信是的。

标签: javascript json


【解决方案1】:

2015-03-26T16:00:00.0000000 中的“T”使Date 构造函数考虑了UTC 时区。对你来说是 +4 小时,对我来说是 +2 小时。

如果你想要中性时间,你需要从字符串中删除'T',你会得到想要的结果:2015-03-26 16:00:00.0000000

Fiddle

如果您想要一个不改变字符串的纯 JS 解决方案,请参阅 this question,我已经测试过了。

【讨论】:

  • 暗里,解释得很好。还有一件事,如果我不想从字符串中删除 T 然后“data.d1.setHours(data.d1.getHours() - 4);”是根据海湾地区获得中立时间的唯一方法吗?海湾距离格林威治标准时间 4+
  • @user1874957 这可能不是最好的方法,因为白天时间的变化会搞砸它,而且如果不是来自海湾的人访问你的代码会发生什么? (时间解释在本地运行)
  • @user1874957 我已经更新了我的答案,添加了一个问题的链接,如果您无法更改字符串(或不想更改),该问题将解决您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多