Adapter

by Artem

JavaScript

'use strict';

class OldDate {
  constructor() {
    this.date = new Date();
  }
  getDay(amount) {
    return new Date(this.date.setDate(this.date.getDate() + amount)).toLocaleDateString('ru', {
      weekday: 'long'
    });
  }
}

class NewDate {
  constructor() {
    this.date = new Date();
  }
  getToday() {
    return this.date.toLocaleDateString('ru', {
      weekday: 'long'
    });
  }
  getTomorrow() {
    const tmpDate = new Date(+this.date);
    return new Date(tmpDate.setDate(tmpDate.getDate() + 1)).toLocaleDateString('ru', {
      weekday: 'long'
    });
  }
  getYesterday() {
    const tmpDate = new Date(+this.date);
    return new Date(tmpDate.setDate(tmpDate.getDate() - 1)).toLocaleDateString('ru', {
      weekday: 'long'
    });
  }
}

class DateAdapter extends OldDate {
  constructor(dateInstance) {
    super();
    this.instance = dateInstance;
  }
  getDay(amount) {
    switch (amount) {
      case 0:
        return this.instance.getToday();
      case 1:
        return this.instance.getTomorrow();
      case -1:
        return this.instance.getYesterday();
      default:
        throw new TypeError('You should pass only "1" or "-1" or "0" values');
    }
  }
}

const newDateInstance = new NewDate();
const adapter = new DateAdapter(newDateInstance);
const today = adapter.getDay(0);
const yesterday = adapter.getDay(-1);
const tomorrow = adapter.getDay(1);

console.log(yesterday, today, tomorrow);