Как сравнить строку даты с помощью JavaScript - PullRequest
1 голос
/ 08 апреля 2019

У меня есть следующее строковое значение даты, 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 ]

3 голосов
/ 08 апреля 2019

вс 7 апреля 2019 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;
}
0 голосов
/ 08 апреля 2019

Преобразуйте все значения в Date объекты и сравните их.Для этого используйте фреймворк / библиотеку, потому что при разборе строк на даты есть много мест, где это может пойти не так.

В настоящее время вы сравниваете литералы String s.Поскольку ни "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 не будет выполнен.

0 голосов
/ 08 апреля 2019

Построение даты из строк и сравнение дней (т.е. количества секунд с начала эпохи / количества секунд в дне):

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'),
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...