【问题标题】:Moment JS Show Local Time from DateTime.UTCNowMoment JS 从 DateTime.UTCNow 显示本地时间
【发布时间】:2014-04-09 17:58:45
【问题描述】:

我有一个 JSON 方法,它返回我存储在服务器上的 UTC 日期时间。它返回以下内容:

/Date(1394155885817)/

我试图弄清楚如何让 Moment JS 向我显示本地(浏览器)时间。所以我的时区是 -5 (EST) 我希望看到 3:31 而不是 8:31。请参阅下面的小提琴。

http://jsfiddle.net/R9UbS/

我在这里做错了什么?如何强制 Moment 返回本地?

【问题讨论】:

  • 你可以在服务器端ToLocalTime
  • 需要客户来处理。服务器如何知道客户端时区
  • 它不知道,但我认为 Javascript 也不知道。您不能将正确的 dateTime 对象从服务器传递给 Javascript,以便 JS 知道它提供的时区吗?

标签: asp.net-mvc datetime utc momentjs


【解决方案1】:

我刚刚在罗马尼亚拉小提琴,得到了 3:31。此外,javascript 的 Date 构造函数可以正确处理 UTC 毫秒。你得到了 8:31,这让我觉得它正在做它应该做的事情,显示当地时间。为什么 8:31 不正确?您设备的时区设置是否正确? (顺便说一句,如果您的时区是 GMT -5,那么您确实会在前一天晚上 8:31)

只是为了说明这一点,我将数字放在milliseconds to time converter 中,我看到 1394155885817 实际上表示 UTC 时间(或 GMT 时间)的 Fri Mar 07 1:31:25 AM - 减去 5 小时这将导致 Fri Mar 06 2014 8:31:25 PM

【讨论】:

  • 嗨 Teo 感谢您的想法。所以这是我的场景。我的网站托管在 Azure 和 C# 中,我使用 DateTime.UTCNow 保存记录 - 对于这种特殊情况,当我创建该记录时,它是在美国东部标准时间下午 3:31。但是,当 JSON 被序列化并返回时,它是 /Date(1394155885817)/ 标记,比我想要的时间提前 5 小时。这是有道理的,因为我在 -5 的 EST。我还在想这个错误吗?
  • 1394155885817 是世界标准时间上午 1:31,因此实际上比美国东部标准时间下午 3:31 早了 10 小时。也许你的序列化有问题? (你能发布你用来序列化的确切代码吗?)为了完整,我认为你应该这样做 (DateTime.UtcNow - new DateTime (1970, 1, 1)).TotalMilliseconds
  • 查看 Hath 来自here的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多