23 lines
861 B
TypeScript
23 lines
861 B
TypeScript
const KOREA_TIME_OFFSET_MS = 9 * 60 * 60 * 1000;
|
|
|
|
const pad = (value: number): string => String(value).padStart(2, '0');
|
|
|
|
export const formatSeoulDateTime = (value: string | Date): string => {
|
|
if (
|
|
typeof value === 'string' &&
|
|
!/(?:Z|[+-]\d{2}:?\d{2})$/i.test(value.trim())
|
|
) {
|
|
return value.trim().replace('T', ' ').slice(0, 19);
|
|
}
|
|
const date = value instanceof Date ? value : new Date(value);
|
|
if (Number.isNaN(date.getTime())) {
|
|
return typeof value === 'string' ? value.slice(0, 19) : '';
|
|
}
|
|
const koreaTime = new Date(date.getTime() + KOREA_TIME_OFFSET_MS);
|
|
return `${koreaTime.getUTCFullYear()}-${pad(koreaTime.getUTCMonth() + 1)}-${pad(
|
|
koreaTime.getUTCDate()
|
|
)} ${pad(koreaTime.getUTCHours())}:${pad(koreaTime.getUTCMinutes())}:${pad(
|
|
koreaTime.getUTCSeconds()
|
|
)}`;
|
|
};
|