Имея две даты, firstDate и secondDate, я хочу проверить, находится ли новая между этими двумя, но я продолжаю получать ошибки.

Мой подход:

export class AppComponent {
  first = "20171212";
  second = "20181212";

  firstDate = new Date(this.first);
  secondDate = new Date(this.second);

  check = "20180101";
  checkDate = new Date(this.check);

  if( this.checkDate > this.firstDate && this.today < this.secondDate) {
      return true;

  }
}

Сообщение об ошибке говорит о том, что нельзя использовать точечную запись в this.checkDate и других.

Есть идеи, почему это не так?

0
Leo Messi

2 ответа

new Date ("20171212") вернет Недопустимая дата , используйте new Date ("2017/12/12") . Кроме того, создайте метод для проверки даты. Что-то вроде (обычный JS)

const first = "2017/12/12";
const second = "2019/01/01";
const checkDateBetween = (date2Check, first, second) => 
  date2Check > first && date2Check < second;
console.log(`first: ${first}, last: ${second}`);
console.log(`new Date() between first/last? ${
  checkDateBetween(new Date(), new Date(first), new Date(second))}`);
console.log(`new Date("2018/04/01") between first/last? ${
  checkDateBetween(new Date("2018/04/01"), new Date(first), new Date(second))}`);

На стороне: зачем вам класс с фиксированными данными? Почему класс в любом случае, это просто синтаксический сахар для javascripts прототипа природы.

function DateChecker(first, second) {
  this.first = new Date(first);
  this.second = new Date(second);
  if (!DateChecker.prototype.checkDate) {
    DateChecker.prototype.checkDate = function(date2Check) {
      return date2Check > this.first && date2Check < this.second;
    }
  }
}

const check = new DateChecker("2017/12/12", "2019/01/01");
console.log(`first: ${check.first},\nlast: ${check.second}`);
console.log(`new Date() between first/last? ${
check.checkDate(new Date())}`);
console.log(`new Date("2018/04/01") between first/last? ${
  check.checkDate(new Date("2018/04/01"))}`);

Любая логика или функция должна быть добавлена в метод класса. Добавьте свою логику в метод класса и вместо этого вызовите этот метод. Например:

export class AppComponent {
    first = "20171212";
    second = "20181212";

    firstDate = new Date(this.first);
    secondDate = new Date(this.second);
    check = "20180101";

    dateChecker() {
        checkDate = new Date(this.check);

        if( this.checkDate > this.firstDate && this.checkDate < this.secondDate) {
            return true;
        }
    }
}

Затем вы бы вместо этого вызвали метод dateChecker ().

58579089