所以我遇到了这个小问题,我不知道如何解决它。我有两个日期,一个来自Python脚本,以字符串形式到达,另一个来自MongoDB对象。我需要对它们进行比较,但来自MongoDB的日期似乎有一种奇怪的格式,不允许我这样做
String: 29/12/22 15:00
Object: Wed Dec 28 2022 15:00:00 GMT+0100 (hora estándar de Europa central)
由此,我可以很容易地将来自Python的String转换为Date对象,但我应该如何处理MongoDB对象才能比较它们?
根据信息,MongoDB中的值(此处:date2
)不是字符串,而是Date
对象。因此,您只需要转换Python中的值(此处:date1
):
if ( moment(date1, 'DD/MM/YY HH:mm').toDate() > date2 ) {
console.log('true')
} else {
console.log('false')
}
或者,如果您更喜欢使用Moment
对象:
moment(date1, 'DD/MM/YY HH:mm').isAfter(moment(date2))
您可以使用momentjs在javascript中格式化日期。他就是一个例子:
let date1 = "25/12/22 15:00"
let date2 = "Wed Dec 27 2022 15:00:00 GMT+0100"
if(moment(date1,'DD/MM/YY HH:mm') > new Date(date2)){
console.log('True')
} else {
console.log('false')
}
<script type = "text/JavaScript" src = " https://MomentJS.com/downloads/moment.js"></script>
这里有一个非常简单的方法:将mongo日期作为字符串传递,将其拆分为组件,然后重新生成。在这里,它被重新生成为与Python脚本生成的格式相同的格式。
function convert(mongoDateString) {
const monthAr = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const mongoDateAr = mongoDateString.split(" ");
const dayNo = mongoDateAr[2];
const monthNo = monthAr.indexOf(mongoDateAr[1]);
const yearNo = mongoDateAr[3];
const time = mongoDateAr[4].substring(0, mongoDateAr[4].length - 3);
return dayNo + "/" + monthNo + "/" + yearNo + " " + time;
}
let thisDateString = "Wed Dec 28 2022 15:00:00 GMT+0100 (hora estándar de Europa central)"
console.log(convert(thisDateString ))