我正试图在React中构建一个应用程序,用户可以通过该应用程序传递两个日期,系统将以天为单位返回这两个日期之间的持续时间。我使用过Moment.js库,它在同一年内正常工作了几天,但在不同的年份返回Nan。下面是我的脚本:
<tr>
<th> 9</th>
<th>Dr </th>
<th>Abel </th>
<th>Jack </th>
<th>abeljack@outlook.com </th>
<th>26 </th>
<th>2019-12-25 </th>
<th> 2020-01-02</th>
<th>{moment([2020, 1, 2]).diff(moment([2019, 12, 25]), "days")}</th>
</tr>
我该怎么办才能把它整理好?
当您使用一个数字数组创建日期时,月份从零开始,该数组反映了传递给new Date()
的参数。所以使用12不是一个有效的月份数字。
const date1 = moment([2020, 1, 2]);
const date2 = moment([2019, 12, 25]) // null, month can not be greater than 11
date1.diff(date2, "days") // NaN
您可以将日期作为字符串传递给moment
。moment将为您解析日期字符串。
来自Moment.js
从字符串创建力矩时,我们首先检查字符串匹配已知的ISO8601格式,然后检查字符串是否匹配RFC 2822下降到新的回退之前的日期-时间格式如果找不到已知格式,则为日期(字符串(。
const date1 = moment("2020, 1, 2");
const date2 = moment("2019, 12, 25");
date1.diff(date2, "days") // 8 days