【问题标题】:Create moment Object from UTC string从 UTC 字符串创建时刻对象
【发布时间】:2015-06-06 23:09:34
【问题描述】:

我从我的网络服务中获取 UTC 日期字符串,如下所示: "2015-06-06T12:30:12Z"

我需要按照以下两条规则显示它:

  1. 如果日期
  2. 如果日期 > 1 周,则显示日期YYYY-DD-MM

现在我正在尝试构建一个时刻对象,但似乎返回了一些奇怪的东西:

var sDate = "2015-06-06T12:30:12Z";
var momentDate = moment(sDate);
var fromNow = momentDate.fromNow();
console.log("momentDate : " + momentDate);    // 1433593812000
console.log("fromNow : " + fromNow);    // 11å°æ™‚å‰

你知道如何做到这一点吗?

谢谢。

【问题讨论】:

  • 这很奇怪,但我在 JsFiddle 中执行了你的代码(原样),一切似乎都很好: [Log] momentDate : 1433593812000 [Log] fromNow : 11 hours ago 这可能是页面的问题或机器字符集。
  • @sviklim:谢谢。抱歉刚刚发现我使用的是moment-with-locale.js...不是包装moment.js 吗?
  • 对不起,我对moment-with-locale.js没有经验;我曾经使用原始库版本

标签: javascript date momentjs utc


【解决方案1】:

你只是遇到了一个错误,已经记录为#2367

简单地说,它使用最后加载的语言环境(“zh-tw”),而不是默认为英语。

在加载时刻之后但在任何地方使用它之前,只需调用添加以下行。

moment.locale('en');

这会将语言设置回英语。

这解释了fromNow 字符串的输出。另一个输出是因为您将 moment 对象直接与另一个字符串连接,该字符串隐式调用 .valueOf(),它以毫秒为单位返回基于 UTC 的时间戳。您应该改用 .format(),或许可以使用 .format("YYYY-MM-DD") 之类的参数 - 如果这是您希望看到的输出格式。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多