feat: add custom api model
This commit is contained in:
		
							
								
								
									
										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')}`; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user