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
,因为你在执行代码的时候把startTime
和endTime
的区别搞出来了,最后这个是空串并且 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>
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
,因为你在执行代码的时候把startTime
和endTime
的区别搞出来了,最后这个是空串并且 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>