为什么本地时间与UTC中的UTC没有区别?

时间:2014-02-11 14:54:31

标签: javascript momentjs

我有以下使用moment.js的代码:

var Now = moment();
var UTC = moment().utc();

 if (moment().isBefore(UTC)){
    $("#was").html("Time difference : " + Now.from(UTC)).fadeIn('fast');
 } else {
    $("#was").html("Time difference : " + UTC.fromNow()).fadeIn('fast');
 }

结果始终:“几秒钟之前”。你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:3)

虽然NowUTC的显示方式不同,但它们在“时刻”相同。要理解这一点,您必须了解moment.js内部如何运作。这里有一些info from the official moment.js documentation(强调我的):

  

默认情况下,分析并以当地时间显示

     

如果您想解析或以UTC显示片刻,您可以使用moment.utc()而不是moment()。

所以区别在于解析和显示。在内部,时刻对象具有相同的时间戳。一个用于演示此操作的小测试是在代码后附加(并运行)followin:

console.log(Now.valueOf());
console.log(UTC.valueOf());
console.log(Now.valueOf() - UTC.valueOf());  // will be "a few secods" at most ;)

更新:如果您的目的是创建一个例如5小时前的时刻,那么:

var hours_ago = 5;
var earlier = moment().subtract('hours', hours_ago); // 5 hours ago
var earlier_yet = moment().subtract({'days': 2, 'hours': 3}) // 2 days, 3 hours ago