如何使用JavaScript比较日期字符串

时间:2019-04-08 15:49:15

标签: javascript angularjs date

我有一个日期为Sun Apr 07 2019 00:00:00 GMT-0300的以下字符串值,并且我需要与以下日期格式为2019-04-08T03:00:00.000Z比较,请注意两者都是同一天,我需要将它们进行比较并返回相等的天数

但是我不知道如何使用javascript做到这一点,有帮助吗?

我试图做这样的事情,但它并没有使我成真:

if (input) { 

     //input.value = "Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)"

     var situation = angular.isArray(item.situation) ? item.situation : [item.situation]; 

     // situation = 
     //[
     //    0: "2019-04-08T03:00:00.000Z"
     //    1: "2019-04-13T03:00:00.000Z"
     //]

     if (!angular.isArray(input.value)) {
        condition = situation.indexOf(input.value) >= 0;

     } else if (angular.isArray(input.value)) {
        condition = $window._.intersection(situation, input.value).length > 0;
     }
}

if (condition) {
    break;
}

//input.value = "Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)"

 situation = 
     [
         0: "2019-04-08T03:00:00.000Z"
         1: "2019-04-13T03:00:00.000Z"
     ]

3 个答案:

答案 0 :(得分:3)

  

2019年4月7日星期日00:00:00 GMT-0300

     

2019-04-08T03:00:00.000Z

     

请注意,两者都是同一天

不,不是。

您可以将它们都转换为ISO字符串,而只是将它们的日期部分作为字符串进行比较(如果我正确地理解了这个问题,您只想比较日期,没有时间):

function isSameDate(date1, date2) {
  const [d1, ] = (new Date(date1)).toISOString().split('T');
  const [d2, ] = (new Date(date2)).toISOString().split('T');
  return d1 === d2;
}

答案 1 :(得分:0)

将所有值转换为Date对象并进行比较。使用框架/库来执行此操作,因为手动将字符串解析为日期有很多地方可能会出错。

当前,您正在比较文字String。因为"2019-04-08T03:00:00.000Z""2019-04-13T03:00:00.000Z"都不匹配"Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)",所以第二条if语句失败。

答案 2 :(得分:-1)

从字符串中建立一个日期,然后比较天数(即从纪元以来的秒数/一天中的秒数):

const sameDay = (dateString1, dateString2) => {
  let time1 = (new Date(dateString1)).getTime();
  let time2 = (new Date(dateString2)).getTime();
  return Math.floor(Math.abs((time1-time2))/(1000*60*60*24))==0;
}

console.log(
  sameDay('Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)','2019-04-08T03:00:00.000Z'),
  sameDay('Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)','2019-04-13T03:00:00.000Z'),
);