|
- import { format, isValid, parse, parseISO } from "date-fns";
-
- export const DEFAULT_DATE_FORMAT = "yyyy/MM/dd";
- export const DEFAULT_DATE_TIME_FORMAT = "yyyy/MM/dd HH:mm:ss";
- export const DEFAULT_DATE_TIME_FORMAT_ANOTHER1 = "yyyy-MM-dd HH:mm:ss";
- export const DEFAULT_YYYYMM_FORMAT = "yyyyMM";
-
- type Input = Date | string | null | undefined;
-
- export const formatDateStr = (source: Input) => {
- return formatToStr(source, DEFAULT_DATE_FORMAT);
- };
-
- export const formatDateTimeStr = (source: Date | string | null | undefined) => {
- return formatToStr(source, DEFAULT_DATE_TIME_FORMAT);
- };
- export const formatYYYYMMStr = (source: Date | string | null | undefined) => {
- return formatToStr(source, DEFAULT_YYYYMM_FORMAT);
- };
-
- const formatToStr = (source: Input, formatStr: string) => {
- if (source === null || source === undefined) return "";
- if (source instanceof Date) return format(source, formatStr);
- return format(parseISO(source), formatStr);
- };
-
- export const now = () => {
- return new Date();
- };
- export const nowStr = (): string => {
- return formatDateTimeStr(now());
- };
-
- export const dateParse = (source: Input): Date | null => {
- return parseFromFormat(source, DEFAULT_DATE_FORMAT);
- };
-
- export const dateTimeParse = (source: Input): Date | null => {
- return (
- parseFromFormat(source, DEFAULT_DATE_TIME_FORMAT) ??
- parseFromFormat(source, DEFAULT_DATE_TIME_FORMAT_ANOTHER1)
- );
- };
-
- const parseFromFormat = (source: Input, format: string): Date | null => {
- if (source === null || source === undefined) return null;
- if (source instanceof Date) return source;
-
- const ret = parse(source, format, new Date());
- if (isValid(ret)) {
- return ret;
- }
- return null;
- };
|