繁体   English   中英

如何使用momentjs处理大日期?

[英]How to handle large dates with momentjs?

我试图找到两个瞬间对象之间几个月的差异。 我做了如下:

const current = moment()
const future = moment().add('324523546345634563456345','months')
const diff = future.diff(current, 'months')

diff为0。为什么? 有没有其他方法可以处理324523546345634563456345这样的大数字?

简短的答案:您的输入超出了JavaScript内置的整数和日期类型的限制。 要使用如此大的数字进行计算,请使用BigInt (像MomentJS这样的大多数日期库都不支持BigInt ,原因之一是正整数提供了合理的日期范围。)


JavaScript内置数字可以表示的最大整数是9,007,199,254,740,991 浮点数要高得多,但是对于这种类型的用例来说可能没有意义(浮点间隙太多)。

您的输入:324,523,546,345,634,563,456,345比JavaScript内置整数支持的数量级大许多数量级。 在将月份转换为毫秒之后,甚至还没有考虑其他数量级的情况。

坦白说,我很惊讶结果为0而不是NaN

此外,我相信MomentJS在内部使用内置的JavaScript Date类型。 最长日期大约是275,760年 您的意见将需要一年的支持,直到今年为止。 实际上,您的输入大于宇宙的年龄

如果确实需要进行这样的计算,则可以使用BigInt 您可能必须手动进行计算,因为我认为任何与时间相关的库都不会支持这么大的日期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM