比较 Typescript / Angular 4 上的日期

sAn*_*ntd 5 typescript angular

我正在尝试比较typescript/angular 4 中的日期。就我而言,我将系统日期分配给名为“today”的变量,并将数据库日期分配给名为“dateToBeCheckOut”的变量。然后我使用 if 语句比较日期,在我的情况下,我希望得到结帐日期小于(之前)今天日期的预订。但是我得到了意想不到的结果,而不是得到了预期的结果。我在下面附上了我的代码,并希望有人帮助理解它为什么会发生。

这是代码

for(let k = 0; k < this.bookingDetailsArrayRealObject.length; k++){
        let dateCheckOut = this.bookingDetailsArrayRealObject[k].package.chackout;
        let dateToBeCheckOut = new Date(dateCheckOut);
        let today = new Date(Date.parse(Date()));
        //let today_test = new Date();
        if(this.bookingDetailsArrayRealObject[k].status){
          if(dateToBeCheckOut.toDateString() < today.toDateString()){
            this.bookingIdsToBeUpdated.push(this.bookingDetailsArrayRealObject[k]._id);
            window.alert('true');
            console.log(today.toDateString());
            console.log(dateToBeCheckOut.toDateString());
            console.log(this.bookingDetailsArrayRealObject[k]);
          }
        }
      }
Run Code Online (Sandbox Code Playgroud)

来自数据库的预订对象

控制台结果

在控制台结果中,根据 if 语句,第三个是意外的。任何建议将不胜感激。

jcr*_*oll 5

您可以比较日期对象,而无需将它们转换为字符串。尝试:

for(let k = 0; k < this.bookingDetailsArrayRealObject.length; k++){
        let dateCheckOut = this.bookingDetailsArrayRealObject[k].package.chackout;
        let dateToBeCheckOut = new Date(dateCheckOut);
        let today = new Date();
        //let today_test = new Date();
        if(this.bookingDetailsArrayRealObject[k].status){
          if(dateToBeCheckOut < today){
            this.bookingIdsToBeUpdated.push(this.bookingDetailsArrayRealObject[k]._id);
            window.alert('true');
            console.log(today.toDateString());
            console.log(dateToBeCheckOut.toDateString());
            console.log(this.bookingDetailsArrayRealObject[k]);
          }
        }
      }
Run Code Online (Sandbox Code Playgroud)