34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { BadRequestException } from "@nestjs/common";
|
|
|
|
export const hhmmFromLocal = (d: Date) =>
|
|
`${String(d.getHours()).padStart(2,'0')}:${String(d.getMinutes()).padStart(2,'0')}`;
|
|
|
|
export const toDateOnly = (s: string): Date => {
|
|
if (/^\d{4}-\d{2}-\d{2}$/.test(s)) {
|
|
const y = Number(s.slice(0,4));
|
|
const m = Number(s.slice(5,7)) - 1;
|
|
const d = Number(s.slice(8,10));
|
|
return new Date(y, m, d, 0, 0, 0, 0);
|
|
}
|
|
const dt = new Date(s);
|
|
if (Number.isNaN(dt.getTime())) throw new BadRequestException(`Invalid date: ${s}`);
|
|
return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), 0,0,0,0);
|
|
};
|
|
|
|
// export const toStringFromDate = (d: Date) =>
|
|
// `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`;
|
|
|
|
|
|
export const toISOtoDateOnly = (iso: string): Date => {
|
|
const date = new Date(iso);
|
|
if (Number.isNaN(date.getTime())) {
|
|
throw new BadRequestException(`Invalid date: ${iso}`);
|
|
}
|
|
date.setHours(0, 0, 0, 0);
|
|
return date;
|
|
};
|
|
|
|
export const toISODateKey = (date: Date): string => date.toISOString().slice(0, 10);
|
|
|
|
export const normalizeDates = (dates: string[]): string[] =>
|
|
Array.from(new Set(dates.map((iso) => toISODateKey(toISOtoDateOnly(iso))))); |