javascript - дата должна быть с 1 ноября текущего года до 10 февраля следующего года - PullRequest
0 голосов
/ 13 июня 2018

Я ставлю некоторые условия, что дата должна быть с 1 ноября текущего года до 10 февраля следующего года

Это то, что я пытался

if((date.getDate() >= 1 && date.getMonth() === 11 && date.getFullYear()) && (date.getDate() <= 10 && date.getMonth() === 2 && date.getFullYear + 1)){
   condition satisfied
}

Очевидно, что это не такза работой.Как правильно в javascript поставить это условие.

Ответы [ 3 ]

0 голосов
/ 14 июня 2018

Код не работает, потому что при сравнении дат необходимо сравнивать всю дату, а не только ее части.Вы можете получить текущий год из экземпляра Date, а затем использовать его для создания предельных дат для сравнения, например,

function testDate(date) {
  var year = new Date().getFullYear();
  return date >= new Date(year, 10, 1) &&       // 1 Nov current year
         date <= new Date(year + 1, 1, 11) - 1; // 10 Feb next year at 23:59:59.999
}

// Some tests
[new Date(2018,9,31),  // 31 Oct 2018
 new Date(2018,10,1),  //  1 Nov 2018
 new Date(2019,1,10),  // 10 Feb 2018
 new Date(2019,1,11),  // 11 Feb 2018
 new Date()]           // Current date
 .forEach(function(date) {
   console.log(date.toLocaleString(undefined, {day: '2-digit',
     month:'short', year:'numeric'}) + ': ' + testDate(date));
 });

Все вышеперечисленные даты считаются локальными для хоста.

0 голосов
/ 21 июня 2018

Вы можете легко использовать Moment.js

let checkDifferenceDate = moment() >= moment("12/01/"+moment().year()) && moment() <= moment("01/31/"+moment().add(1,'year').year())
if(checkDifferenceDate){
    //You logic here !
}
0 голосов
/ 13 июня 2018

Вот решение, которое работает:

function check(date) {
  currentYear = new Date().getFullYear()
  return  date > new Date(currentYear + '-11-01') && date < new Date(currentYear + 1 + '-02-10')
}

console.log(check(new Date())); // currently false
console.log(check(new Date('2018-12-01'))); // true
console.log(check(new Date('2019-01-31'))); // true

Используйте его следующим образом:

if(check(date)) {
    ...
}
...