Javascript如何比较mongoose日期与字符串

voase2hg  于 2023-01-04  发布在  Java
关注(0)|答案(3)|浏览(143)

所以我遇到了这个小问题,我不知道如何解决它。我有两个日期,一个来自Python脚本,以String形式到达,另一个来自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对象才能比较它们呢?

czq61nw1

czq61nw11#

根据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))
rta7y2nd

rta7y2nd2#

你可以使用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>
omhiaaxx

omhiaaxx3#

下面是一个非常简单的方法:将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 ))

相关问题