Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用momentjs处理大型日期?_Javascript_Date_Time_Momentjs - Fatal编程技术网

Javascript 如何使用momentjs处理大型日期?

Javascript 如何使用momentjs处理大型日期?,javascript,date,time,momentjs,Javascript,Date,Time,Momentjs,我试图找出两个力矩物体在几个月内的差异。我做了如下工作: const current = moment() const future = moment().add('324523546345634563456345','months') const diff = future.diff(current, 'months') diff显示为0。为什么呢?有没有一种不同的方法来处理像32452354643456345634545这样的大数字?简短回答:您的输入超出了JavaScript内置整数和日

我试图找出两个力矩物体在几个月内的差异。我做了如下工作:

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

diff
显示为0。为什么呢?有没有一种不同的方法来处理像
32452354643456345634545这样的大数字?

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


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

您的输入:32452354646345634563456345比JavaScript内置整数支持的值大很多数量级。这甚至是在考虑将月份转换为毫秒后的额外数量级之前

坦率地说,我很惊讶结果是0,而不是
NaN

此外,我相信MomentJS在内部使用内置的JavaScript日期类型。最长日期是关于日期的。您的输入将需要一年的支持,远远超过今年。事实上,您的输入大于


如果你真的需要做这样的计算,你可以用s。您可能必须手动进行计算,因为我认为任何与时间相关的库都不支持如此大的日期。

我认为“瞬间”的持续时间可以处理如此大的数字。不确定为什么会存在差异。