Javascript 试图通过减去两个不同的日期得到天数

Javascript 试图通过减去两个不同的日期得到天数,javascript,reactjs,Javascript,Reactjs,我想知道如何减去两个不同的日期得到余数。基于我的谷歌搜索,这似乎应该是非常直接的,但我的代码并没有像预期的那样工作 const options = { year: 'numeric', month: 'numeric', day: 'numeric' }; let today = new Date(); today = today.toLocaleDateString('en-US', options); // '2/20/2019' dueDate = new Date(dueDate[0])

我想知道如何减去两个不同的日期得到余数。基于我的谷歌搜索,这似乎应该是非常直接的,但我的代码并没有像预期的那样工作

const options = { year: 'numeric', month: 'numeric', day: 'numeric' };
let today = new Date();
today = today.toLocaleDateString('en-US', options); // '2/20/2019'
dueDate = new Date(dueDate[0]);
dueDate = dueDate.toLocaleDateString('en-US', options); // '12/15/2019'
daysLeft = today.setDate(today.setDate() - dueDate); // Being declared as a let outside the scope block
我收到的错误消息是:Uncaught in promise TypeError:today.setDate不是函数

更新:


可能的重复答案几乎帮了我的忙,但它不能解释年份,因此2019年2月20日-2001年2月1日输出19,这是不正确的。

主要问题是,今天你将日期解析为字符串,然后对其调用方法,这自然会失败。您应该将today.toLocaleDateString'en-US',options(一个字符串)的值分配给另一个变量,并对实际包含Date对象的变量使用该方法。这是假设代码的其余部分没有问题。

主要的问题是您将今天的日期解析为一个字符串,然后对其调用一个方法,这自然会失败。您应该将today.toLocaleDateString'en-US',options(一个字符串)的值分配给另一个变量,并对实际包含Date对象的变量使用该方法。这是假设代码的其余部分没有问题。

您可以使用直接数学

让今天=新的日期; 让dueDate=新日期'2019年12月15日'; 让difference=Math.absMath.roundtoday.getTime-dueDate.getTime/1000/24/60;
控制台。对数差 你可以直接用数学

让今天=新的日期; 让dueDate=新日期'2019年12月15日'; 让difference=Math.absMath.roundtoday.getTime-dueDate.getTime/1000/24/60; 控制台。对数差; 他是你的朋友!您可以简单地使用如下所示的-

时刻。地点‘en-US’;//设置区域设置 var今天=时刻;//当前日期 var dueDate=2019年12月15日,年月日;//截止日期 console.logMath.absdueDate.difftoday,“天”;//以天为单位的差异,可能的值为月、年。。。 他是你的朋友!您可以简单地使用如下所示的-

时刻。地点‘en-US’;//设置区域设置 var今天=时刻;//当前日期 var dueDate=2019年12月15日,年月日;//截止日期 console.logMath.absdueDate.difftoday,“天”;//以天为单位的差异,可能的值为月、年。。。
是你的朋友;看@TusharWalzade MomentJS似乎是一个满足如此小需求的大型图书馆。我肯定是错的。可能是@Tholle dude的复制品,这肯定帮了我的忙。我很惊讶在我的搜索中没有出现这个问题,但不管怎样,我仍然有一个问题。看起来它只是看天数,而不是年份。因此,总数显示为19,但显然这不可能是真的,因为年份不一致。是你的朋友;看@TusharWalzade MomentJS似乎是一个满足如此小需求的大型图书馆。我肯定是错的。可能是@Tholle dude的复制品,这肯定帮了我的忙。我很惊讶在我的搜索中没有出现这个问题,但不管怎样,我仍然有一个问题。看起来它只是看天数,而不是年份。因此,总数显示为19,但显然这不可能是真的,因为年份不一致。有趣的是,这是我通过谷歌找到的答案,基于每个函数的目标,似乎是合法的,但我已经有一段时间没有处理日期了。有趣的是,这是我通过谷歌找到的答案,基于每个函数的目标,似乎是合法的,但我已经有一段时间没有处理日期了。谢谢你的回答,它解决了我的问题。基于这两个日期,它返回6593.355190972222,我将对其进行解析以删除小数。谢谢,我在这个问题上绞尽脑汁已经有一段时间了。Np,你也可以使用Math.ceil。谢谢你的回答,它解决了我的问题。基于这两个日期,它返回6593.355190972222,我将对其进行解析以删除小数。谢谢,我已经绞尽脑汁想了一段时间了。Np,你也可以使用Math.ceil。在阅读了MomentJS之后,它对我来说非常有效,所以谢谢你的这段代码。我不得不进行一些重构,但最终还是值得的。在阅读了MomentJS之后,它对我来说运行得非常好,所以感谢您提供了这段代码。我不得不进行一些重构,但最终还是值得的。