import { Injectable } from '@angular/core';
import * as moment from 'moment';
type DeadlineType = {
date: string; // YYYY/MM/DD
time: string; // HH:mm || 'none'
};
@Injectable({ providedIn: 'root' })
export class Deadline {
isPast(deadline: DeadlineType): boolean {
const todayTime = new Date().getTime();
const deadlineTime = new Date(this._formatDate(deadline)).getTime();
return todayTime > deadlineTime;
}
isToday(deadline: DeadlineType): boolean {
const todayDate = moment().format('YYYY/MM/DD');
return todayDate === deadline.date;
}
isWithinOneWeek(deadline: DeadlineType): boolean {
const todayTime = new Date().getTime();
const deadlineTime = new Date(this._formatDate(deadline)).getTime();
const oneWeekBeforeDeadlineTime = new Date(
this._formatDateOneWeekAgo(deadline)
).getTime();
return (
todayTime > oneWeekBeforeDeadlineTime && todayTime < deadlineTime
);
}
private _formatDate(deadline: DeadlineType): string {
return `${moment(deadline.date).format('YYYY-MM-DD')}T${
deadline.time === 'none' ? '00:00' : deadline.time
}:00`;
}
private _formatDateOneWeekAgo(deadline: DeadlineType): string {
return `${moment(deadline.date)
.subtract(7, 'd')
.format('YYYY-MM-DD')}T${
deadline.time === 'none' ? '00:00' : deadline.time
}:00`;
}
}
More than 1 year has passed since last update.
Classes that return today's relationship to deadlines【Angular】
Last updated at Posted at 2022-05-14
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
List of users who liked
00