Sascha Manns Ответов: 2

Как сравнить даты в javascript


Я просто написал небольшую функцию. В производстве он должен обрабатывать 3 даты и должен сравнивать, если данная дата находится между двумя другими.
Поэтому я подготовил сценарий ниже.
В настоящее время он ничего не возвращает.

В общем случае он должен возвращать false, если результат истинен.

Может быть, я что-то пропустил?

Привет Саша

Что я уже пробовал:

function testDate() {
    var date = '2016-2018';
    var parts = date.split("-");
    var parts0 = parts[0].replace(/ /g,'');
    var dateFrom = '1'+ '/' + '1' + '/'+ parts0;
    var parts1 = parts[1].replace(/ /g,'');
    var dateTo = '31' + '/' + '12' + '/' + parts1;
    var tocheck = "4.1.2018";
    var tochecksplit = tocheck.split(".");

    var d1 = dateFrom.split("/");
    var d2 = dateTo.split("/");

    var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]);
    var to   = new Date(d2[2], parseInt(d2[1])-1, d2[0]);
    var check = new Date(tochecksplit[2], parseInt(tochecksplit[1])-1, tochecksplit[0]);
    if (check > from && check < to) {
        return "false";
    } else {
        return "true";
    }
}
var test = testDate();

0x01AA


// Check in between: true->it is in between, false it is not
if (check > from && check < to) {
return "true";
} else {
return "false";
}

И кстати я не испытывал никакой разницы console.log был прокомментирован или нет.

Другое дело: подумайте о границах, например. > против. >=

2 Ответов

Рейтинг:
2

0x01AA

1.) я никогда не работал с js, поэтому могу ошибаться

2.) я не испытываю разницы в том, что больше console.log комментируется это или нет

3.) с помощью https://www.w3schools.com/js/ я нашел
Регистрация::= чт 04 января 2018 00:00:00 GMT+0100
от::= ПТ янв 01 2016 00:00:00 GMT+0100
to::= Пн дек 31 2018 00:00:00 GMT+0100
Что для меня значит, check находится между ними from и to

4.)Наконец-то это выглядит нормально для меня

if ((check > from) && (check < to)) {
  return "true";
} else {
  return "false";
}

Примечание: подумайте о границах
if ((check >= from) && (check <= to)) {
  return "true";
} else {
  return "false";
}


[Редактировать]
Примечание: присвоение имени функции testDateInBetween() может быть, это устранит некоторую путаницу ;)


Maciej Los

5ed!

0x01AA

Спасибо Мацей

Рейтинг:
1

Maciej Los

В дополнение к решению 1 by 0x01AA[^], я хотел бы порекомендовать вам прочитать эту превосходную статью: Библиотека временных периодов для .NET[^Он объясняет отношения временных периодов, которые могут помочь вам понять, как реализовать свою собственную функцию.

Кстати: это тоже может быть полезно: Сравните две даты с помощью JavaScript - Stack Overflow[^]


0x01AA

Дито ;)

Maciej Los

Спасибо тебе, Бруно!