Строковое сравнение дат на JavaScript

Пусть у нас есть две даты в следующем текстовом формате:

let date1 = '2020-12-01'; let date2 = '2019-12-01';

В таком случае можно выполнить сравнение этих дат и узнать, какая из этих дат больше:

console.log(date1 > date2); // выведет true

Каким образом происходит сравнение этих дат? Дело в том, что наши даты представляют собой строки и JavaScript сравнивает их как строки. То есть он сначала сравнивает первые символы двух дат: если они одинаковы, то JavaScript сравнивает вторые символы, и так далее, пока не найдет отличия. Благодаря тому, что в нашем формате даты сначала расположен год, потом месяц, а потом день, и возможно такое сравнение.

Дело в том, что если цифра первого года оказывается больше цифры второго года, значит уже не имеет значения, что там с месяцами и днями - первый год точно больше. Если же годы совпадают, то больше будет та дата, у которой больше месяц. А если и месяцы совпадают, то больше будет та дата, у которой больше день. Ну, а если и дни одинаковы, то и даты равны.

Важно также, чтобы даты были в одном формате. В нашем случае разделителями частей дат являются дефисы. Это, конечно же, не обязательно. Например, можно поставить точки:

let date1 = '2020.12.01'; let date2 = '2019.12.01';

Или вообще убрать разделители:

let date1 = '20201201'; let date2 = '20191201';

Главное, чтобы сравнение было корректным, размещение должно быть следующим: сначала год, потом месяц, потом день.

Напишите код, который сравнит две приведенные ниже даты и выведет сообщение о том, какая из них больше:

let date1 = '2020-11-31'; let date2 = '2020-12-01';

Дата без года

Необязательно сравнивать года. Дата может состоять просто из месяца и дня:

let date1 = '12-01'; let date2 = '11-01'; console.log(date1 > date2);

Напишите код, который сравнит две приведенные ниже даты и выведет сообщение о том, какая из них больше:

let date1 = '09-21'; let date2 = '09-23';

Попадание даты в промежуток

Пусть есть три промежутка: с 1 января по 8 марта, с 9 марта по 17 июня, с 18 июня по 31 декабря. Пусть у нас также есть какая-то дата, содержащая месяц и день. Давайте определим, в какой промежуток попадает эта дата:

let date = '08-20'; if (date >= '01-01' && date <= '03-08') { console.log('1 промежуток'); } if (date >= '03-09' && date <= '06-17') { console.log('2 промежуток'); } if (date >= '06-18' && date <= '12-31') { console.log('3 промежуток'); }

Дана дата, содержащая месяц и день. Определите знак Зодиака, на которую приходится эта дата.