moment.js 不接受用户输入

moment.js does not take user input

Moment.js returns NaN 当我尝试从给定的比赛开始日期减去比赛结束时间时。我的代码如下。我希望在几分钟内得到结果。例如,如果用户输入“01-02-2021 08:00 AM”,它应该 return 1440 分钟。有什么建议吗?

let startTime = moment('01-01-2021 08:00 AM');
let endingTime = moment(document.getElementById('arrival').value);
let minuteCount = endingTime.diff(startTime, 'minutes'); 




document.getElementById("myBtn").addEventListener("click", function() {
    document.getElementById('result').innerHTML = minuteCount;
});

console.log(minuteCount);

逻辑有问题,结果是NaN,因为你在执行代码的时候把startTimeendTime的区别搞出来了,最后这个是空串并且 moment 无法将此字符串转换为 moment 对象。此外,您的代码仅在 minuteCount 开始时计算一次。

您可以在事件函数中移动前三行,因此当您单击按钮时,您的代码每次都会计算分钟差异。

document.getElementById("myBtn").addEventListener("click", function() {
  if (document.getElementById('arrival').value) {
    let startTime = moment('01-01-2021 08:00 AM');
    let endingTime = moment(document.getElementById('arrival').value);
    let minuteCount = endingTime.diff(startTime, 'minutes');

    document.getElementById('result').innerHTML = minuteCount;
  } else {
    document.getElementById('result').innerHTML = 'No date selected';
  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

<button id="myBtn">Click me</button>

<input type="datetime-local" id="arrival" value="() => moment().toDate()">

<div id="result"></div>