feat: add custom api model
This commit is contained in:
parent
58bdc6aa69
commit
a4bcc1d920
45
src/shared/structs/DateOnly.ts
Normal file
45
src/shared/structs/DateOnly.ts
Normal file
@ -0,0 +1,45 @@
|
||||
export class DateOnly {
|
||||
private ticks: number;
|
||||
|
||||
/*
|
||||
constructor(year: number, month: number, day: number) {
|
||||
this.ticks = new Date(year, month - 1, day).getTime();
|
||||
}
|
||||
*/
|
||||
|
||||
constructor(year: number, month: number, day: number);
|
||||
constructor(date: Date);
|
||||
constructor(date: string);
|
||||
constructor(yearOrDate: number | Date | string, month?: number, day?: number) {
|
||||
if (yearOrDate instanceof Date) {
|
||||
this.ticks = yearOrDate.getTime();
|
||||
} else if (typeof yearOrDate === 'number' && month !== undefined && day !== undefined) {
|
||||
this.ticks = new Date(yearOrDate, month - 1, day).getTime();
|
||||
} else if (typeof yearOrDate === 'string') {
|
||||
const [year, month, day] = yearOrDate.split('-').map(Number);
|
||||
this.ticks = new Date(year, month - 1, day).getTime();
|
||||
} else {
|
||||
throw new Error('Invalid constructor arguments');
|
||||
}
|
||||
}
|
||||
|
||||
get year(): number {
|
||||
return new Date(this.ticks).getFullYear();
|
||||
}
|
||||
|
||||
get month(): number {
|
||||
return new Date(this.ticks).getMonth() + 1;
|
||||
}
|
||||
|
||||
get day(): number {
|
||||
return new Date(this.ticks).getDate();
|
||||
}
|
||||
|
||||
get date(): Date {
|
||||
return new Date(this.ticks);
|
||||
}
|
||||
|
||||
toString(): string {
|
||||
return `${this.year}-${String(this.month).padStart(2, '0')}-${String(this.day).padStart(2, '0')}`;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user