我的 JavaScript 代码是这样的:
let requestDate = sendDate + ' ' + sendTime + ':00'
requestDate = moment(requestDate, "DD-MM-YYYY HH:mm")
let currentDate = moment().add(3, 'h').format("DD-MM-YYYY HH:mm")
console.log(requestDate)
console.log(currentDate)
console.log('test')
if( requestDate <= currentDate){
console.log('1')
}
else {
console.log('2');
}
在控制台上看起来像这样:
为什么console.log的结果显示为2?
从我的代码来看,它应该是 console.log 显示 1 的结果
最佳答案
您正在将 moment 对象(即:requestDate)与字符串(即:currentDate)进行比较。
您可以在以下代码片段中看到这一点:
let requestDate = '07-09-2017' + ' ' + '12' + ':00'
requestDate = moment(requestDate, "DD-MM-YYYY HH:mm")
let currentDate = moment().add(3, 'h').format("DD-MM-YYYY HH:mm")
console.log('requestDate is: ' + typeof(requestDate) + ' its AND the value is: ' + requestDate.format("DD-MM-YYYY HH:mm"))
console.log('currentDate is: ' + typeof(currentDate) + ' its AND the value is: ' + currentDate)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
您有两个选择。
第一个选项
比较字符串日期。在这种情况下,您可以使用 Query functions 。根据您的情况,您可以使用:isSameOrAfter。
因此,您可以更改此行:
if( requestDate <= currentDate){
至:
if( moment(currentDate, "DD-MM-YYYY HH:mm").isSameOrAfter(moment(requestDate, "DD-MM-YYYY HH:mm"))) {
let requestDate = moment();
requestDate = moment(requestDate, "DD-MM-YYYY HH:mm").format("DD-MM-YYYY HH:mm");
let currentDate = moment().add(3, 'h').format("DD-MM-YYYY HH:mm")
console.log(requestDate)
console.log(currentDate)
console.log('test')
if( moment(currentDate, "DD-MM-YYYY HH:mm").isSameOrAfter(moment(requestDate, "DD-MM-YYYY HH:mm"))) {
console.log('1')
}
else {
console.log('2');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
第二个选项是比较矩对象,并仅在需要打印值时使用.format("DD-MM-YYYY HH:mm")。
let requestDate = moment();
requestDate = moment(requestDate, "DD-MM-YYYY HH:mm")
let currentDate = moment().add(3, 'h');
console.log(requestDate.format("DD-MM-YYYY HH:mm"))
console.log(currentDate.format("DD-MM-YYYY HH:mm"))
console.log('test')
if( requestDate <= currentDate){
console.log('1')
}
else {
console.log('2');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
关于javascript - 为什么我无法将日期与 moment js 进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46095367/