Как мне проверить между двумя датами в текущем месяце?

Например, я хочу проверить период с 1 по 8 января независимо от года (я британец, поэтому мои даты (дд / мм / гггг):

var date = new Date(); //This is the current date

date1 = new Date('01, 01, date.getFullYear()');
date2 = new Date('08, 01, date.getFullYear()');

if(date >= date1 && date <= date2) {
// Do Something
} else {
// Don't do something
}

Или другой пример, скажем, Хэллоуин:

var date = new Date();

date1 = new Date('31, date.getMonth(), date.getFullYear()');

if(date == date1) {
// Do Something
} else {
// Don't do something
}

Я не совсем уверен, как отформатировать его в Javascript, любая помощь будет принята с благодарностью!

-2
Ryan 2 Янв 2018 в 00:26

2 ответа

Лучший ответ

Несколько моментов ...

  • Параметры new Date (год, месяц, день) независимо от ваших локальных настроек.
  • Одинарные кавычки вокруг параметров неправильный синтаксис.
  • Месяцы в JavaScript имеют нулевой индекс, поэтому январь равен нулю.

Итак, ваш date2 должен быть date2 = new Date(date.getFullYear(), 0, 8).

Также возьмите за правило ставить var перед объявлением переменных. Не беспокойтесь, почему именно сейчас; вы узнаете об этом по ходу дела.

Итак, ваш код должен выглядеть примерно так:

var date = new Date();

var date1 = new Date(date.getFullYear(), 0, 1);
var date2 = new Date(date.getFullYear(), 0, 8);

if(date >= date1 && date <= date2) {
    // this part was correct :)
    //Do Something
}
1
Ed Gibbs 1 Янв 2018 в 21:46

Вы неправильно инициализируете объекты Date. Если вы хотите инициализировать дату строкой, эта строка должна иметь формат, который может обрабатываться Date.parse.

Однако строка, которую вы передаете, выглядит так, как будто вы вообще не хотите передавать какие-либо строки. Так что просто опустите одинарные кавычки, например:

var date1 = new Date(date.getFullYear(), 0, 1);

Обратите внимание, что первый аргумент - это год, второй - месяц (отсчитывается от нуля, поэтому 0 - январь), а третий - день месяца.

2
Patrick Hund 1 Янв 2018 в 21:45