Javascript 从UTC字符串创建力矩对象

Javascript 从UTC字符串创建力矩对象,javascript,date,momentjs,utc,Javascript,Date,Momentjs,Utc,我将从我的Web服务中获得UTC日期字符串,如下所示: “2015-06-06T12:30:12Z” 我需要按照以下两条规则显示它: 如果日期1周,则显示日期YYYY-DD-MM 现在我试图构建一个瞬间对象,但似乎返回了一些奇怪的东西: var sDate = "2015-06-06T12:30:12Z"; var momentDate = moment(sDate); var fromNow = momentDate.fromNow(); console.log("momentDate : "

我将从我的Web服务中获得UTC日期字符串,如下所示:
“2015-06-06T12:30:12Z”

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

  • 如果日期<1周,则按如下方式显示:3天前或23分钟前
  • 如果日期>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å°æ™‚å‰
    
    你知道如何做到这一点吗


    谢谢。

    您只是遇到了一个bug,已经登录为

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

    只需在加载力矩之后,但在任何地方使用它之前,调用add下面的行

    moment.locale('en');
    
    这将使语言回到英语


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

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