UNPKG

@modern-kit/utils

Version:
1 lines 2.14 kB
{"version":3,"file":"index.mjs","sources":["../../../src/date/parseDate/index.ts"],"sourcesContent":["import { parseDateString } from '../parseDateString';\n\n/**\n * @description 날짜 문자열, Date 객체, 숫자를 Date 객체로 파싱합니다.\n *\n * 날짜 문자열의 경우 Safari에서 호환되지 않는 날짜 형식(\"-\" 또는 \".\"을 포함한 형식)을 호환시키기 위해 \"-\" 또는 \".\"\"/\"로 변환 후 Date 객체로 파싱합니다.\n * - `YYYY-MM-DD`, `YYYY.MM.DD` 형식의 날짜 문자열을 `YYYY/MM/DD` 형식으로 변환합니다.\n * - `YYYY-MM-DD HH:MM:SS`, `YYYY.MM.DD HH:MM:SS` 형식의 날짜 문자열을 `YYYY/MM/DD HH:MM:SS` 형식으로 변환합니다.\n * - 그 외 형식은 그대로 반환합니다.\n *\n * Date 객체 또는 숫자의 경우 그대로 Date 객체로 파싱합니다.\n *\n * @param {string | Date | number} date - 파싱할 날짜 문자열, Date 객체, 숫자\n * @returns {Date} 파싱된 Date 객체입니다.\n *\n * @example\n * parseDate('2025-01-01') // new Date('2025/01/01') 반환\n * parseDate(new Date('2025-01-01')) // new Date('2025-01-01') 반환\n * parseDate(1714233600000) // new Date(1714233600000) 반환\n */\nexport const parseDate = (date: string | Date | number): Date => {\n let dateToUse: Date | null = null;\n\n if (typeof date === 'string') {\n dateToUse = new Date(parseDateString(date));\n }\n\n if (date instanceof Date || typeof date === 'number') {\n dateToUse = new Date(date);\n }\n\n if (dateToUse && isNaN(dateToUse.getTime())) {\n throw new Error('유효하지 않은 날짜 형식입니다.');\n }\n\n return dateToUse as Date;\n};\n"],"names":[],"mappings":";;AAoBO,MAAM,SAAA,GAAY,CAAC,IAAA,KAAuC;AAC/D,EAAA,IAAI,SAAA,GAAyB,IAAA;AAE7B,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,SAAA,GAAY,IAAI,IAAA,CAAK,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA,EAC5C;AAEA,EAAA,IAAI,IAAA,YAAgB,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AACpD,IAAA,SAAA,GAAY,IAAI,KAAK,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,IAAI,SAAA,IAAa,KAAA,CAAM,SAAA,CAAU,OAAA,EAAS,CAAA,EAAG;AAC3C,IAAA,MAAM,IAAI,MAAM,oFAAmB,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,SAAA;AACT;;;;"}