javascript - 为什么本地时间与 moment.js 中的 UTC 时间没有区别?

标签 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');
 }

结果总是:“几秒钟前”。你能告诉我我做错了什么吗?

最佳答案

尽管NowUTC 显示不同,但它们是相同的“时刻”。要理解这一点,您必须掌握 moment.js 的内部工作原理。这是一些info from the official moment.js documentation (强调我的):

By default, moment parses and displays in local time.

If you want to parse or display a moment in UTC, you can use moment.utc() instead of moment().

所以区别在于解析和显示。在内部,时刻对象具有相同的时间戳。证明这一点的一个小测试是在您的代码之后附加(并运行)以下内容:

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

关于javascript - 为什么本地时间与 moment.js 中的 UTC 时间没有区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705224/

相关文章:

javascript - 动态定义硬编码的 Javascript 函数

javascript - Moment.js 无效日期消息

javascript - 如何在 Bluemix 上安装 moment-timezone.js?

javascript - 日期和时间的问题是对话取决于本地时区

javascript - 为什么我在 JavaScript 中使用函数时得到 NaN

javascript - 如何设置A框模型的尺寸?

javascript - 如果先前单击的元素和鼠标移动,则保持悬停类

javascript - React 中的 for 循环

javascript - 如何解决 12 小时格式中分钟精度丢失的问题?

javascript - moment.js 中的 isValid() 和 _isValid 有什么区别?