为什么moment.utc(..).diff(moment.ucc(..))会受到源日期偏移量的影响
Why moment.utc(...).diff(moment.utc(...)) gets affected by source date offsets
检查以下代码示例:
moment.utc("2014-10-19T09:27:57.9417128+00:00")
.diff(moment.utc("2014-10-19T09:27:57.9417128+02:00"))
我希望0
,因为我将两个日期都转换为UTC,但结果是7200000
。
事实上,由于Date
/moment
基于日期偏移量转换日期时间,我希望让moment.fromNow
或moment.from
与UTC一起工作,以获得没有无效结果的X seconds/minutes/hours... ago
。
我在这里做错了什么?
我不知道为什么你会认为源偏移量应该被忽略。它们与转换为UTC特别相关,因为它们实际上代表UTC和所代表的时间之间的差异。
在第一个时间戳中,+00:00
表示时间已经在UTC。在第二个时间戳中,+02:00
表示时间比UTC提前两个小时。CCD_ 10。
换句话说:
2014-10-19T09:27:57.9417128+00:00 == 2014-10-19T09:27:57.9417128Z
- 2014-10-19T09:27:57.9417128+02:00 == 2014-10-19T07:27:57.9417128Z
=======================================================================
02:00:00
结果不可能是零,因为无论你怎么看,这两个时间戳代表两个不同的时刻,相隔两个小时。
由于moment的fromNow
函数已经适用于当前UTC时间,并且您有一个带偏移量的完整ISO时间戳,因此您可以直接使用它,而无需进行任何转换。
moment("2014-10-19T09:27:57.9417128+02:00").fromNow()
您甚至不需要先转换为UTC。你可以这样做:
moment.utc("2014-10-19T09:27:57.9417128+02:00").fromNow()
但这两者都会返回相同的东西,因为您已经提供了偏移量。只有当不包含偏移量时,它们才会不同,在这种情况下,第一种情况将以本地时间解释输入字符串,第二种情况将用UTC解释输入字符串。两者都不会改变CCD_ 12函数的行为。
相关文章:
- 如何在moment.js中只比较日期
- 如何用moment.js列出两个日期之间的所有月份
- 如何获得一个只有时间的moment.js日期对象
- 使用moment.js获取时间分区的偏移日期对象
- moment.js在两个时区格式的日期之间存在差异
- 使用moment.js获取月份和年份中的所有日期
- 使用moment.js分析日语日期字符串
- 如何使用moment.js获取24小时内日期之间的时差
- 使用 moment.toDate() 时,在 Express 4.13.4 中忽略了 Cookie 到期日期
- 如何使用moment.js获取日期和时间
- 使用angular-moment.js设置日期格式
- Moment JS中的动态日期
- Moment会在设置日期时自动更正无效日期
- Moment.js-两个日期的天数不同
- 如何在Moment.js中从日期开始获取一个月中的星期
- Moment.js不断返回UTC而不是本地日期
- 使用moment.js检查日期格式
- moment:使用用户语言格式化日期时出错
- Moment.js:根据浏览器语言设置日期格式
- Moment() vs预定义的Moment()日期