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);