/** * 공개 화면용 게시 날짜를 YYYY.MM.DD 형식으로 변환한다. * @param {string | null | undefined} value - ISO 8601 등 파싱 가능한 날짜 문자열 * @returns {string} 빈 문자열 또는 YYYY.MM.DD */ export function formatPostDate(value) { if (!value) { return '' } const date = new Date(value) if (Number.isNaN(date.getTime())) { return '' } const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') return `${year}.${month}.${day}` } /** * 관리자·상세 메타용 날짜·시각을 YYYY.MM.DD 오전/오후 HH:MM 형식으로 변환한다. * @param {string | null | undefined} value - ISO 8601 등 파싱 가능한 날짜 문자열 * @returns {string} 빈 문자열 또는 포맷된 날짜·시각 */ export function formatPostDateTime(value) { if (!value) { return '' } const date = new Date(value) if (Number.isNaN(date.getTime())) { return '' } const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') const hours = date.getHours() const minutes = String(date.getMinutes()).padStart(2, '0') const period = hours < 12 ? '오전' : '오후' const hour12 = String(hours % 12 || 12).padStart(2, '0') return `${year}.${month}.${day} ${period} ${hour12}:${minutes}` } /** * 발행 이후 본문·메타 수정이 있었는지 판별한다(동일 초 갱신은 제외). * @param {{ publishedAt?: string | null, updatedAt?: string | null }} post - 게시물 * @returns {boolean} 발행 후 수정 여부 */ export function wasPostUpdatedAfterPublish(post) { if (!post?.publishedAt || !post?.updatedAt) { return false } const publishedMs = new Date(post.publishedAt).getTime() const updatedMs = new Date(post.updatedAt).getTime() if (Number.isNaN(publishedMs) || Number.isNaN(updatedMs)) { return false } return updatedMs - publishedMs > 60_000 }