为什么momentjs给出错误的结果

时间:2021-01-06 16:22:58

标签: javascript momentjs

我在 moment.js 中有这段代码。它运行良好,但我有一个问题。例如,今天日期是 06/01/2021 并且开始 DIV 的值为 06/01/2021,它给我结果 0,相同如果我设置 07-01-2021,它给我 0 的结果。但是如果我设置 08-01-2021,那么它给我 1(必须是 2)。我想如果我设置明天日期(07-01-2021) ) 我必须返回 1 的值,但我收到 0,,,,为什么?有没有办法收到1?谢谢你的解释和帮助。

我的 HTML

<div id="start">07-01-2021</div>
<div id='result'></div>

javascript,monent.js

var inputDiv = document.getElementById('start');
var startDate = moment();
var endDate = moment(inputDiv.innerHTML, "DD/MM/YYYY");
var result = 'Diff: ' + endDate.diff(startDate, 'days');
$('#result').html(result);

2 个答案:

答案 0 :(得分:2)

Moment 将用作日期时间,因此您的两个日期都将有一个与之关联的时间。

var inputDiv = document.getElementById('start');
var endDate = moment(inputDiv.innerHTML, "DD/MM/YYYY"); // time of midnight (start of day), locally
var startDate = moment();  // time you run the code

因此,endDate.diff(startDate, 'days') 将计算类似于 (tonight at midnight[locally]) - (today, midday[locally]) 的东西。该等式没有一整天的差异。

尝试endDate.endOf('day').diff(startDate, 'days'),或者更好的endDate.endOf('day').diff(startDate.endOf('day'), 'days')

或者您可以只设置 var startDate = moment().startOf('day'); 并使用您现在拥有的代码。

答案 1 :(得分:1)

试试“DD-MM-YYYY”而不是“DD/MM/YYYY”