← 전체 글로 돌아가기

Next.js

검색 결과에서 날짜가 엉뚱하게 보인 뒤 UTC와 KST를 분리한 체크리스트

발행일이 자정 근처에서 하루 밀려 보인 문제를 저장 형식, 렌더링, 구조화 데이터로 나눠 점검한 SEO 체크리스트입니다.

자정 전후 글만 하루가 달랐다

한국 시간 8월 19일 00시 10분에 발행한 글이 검색 미리보기에는 8월 18일로 보였다. 화면 날짜는 맞았지만 HTML의 JSON-LD와 화면 문자열이 서로 다른 값을 보내고 있었다. DB의 2026-08-18T15:10:00Z는 KST로 8월 19일 00시 10분이므로 저장값은 정상이다.

저장과 표시의 책임을 나눴다

저장·API 전송은 UTC ISO, 사람에게 보여 주는 값은 KST로 고정했다. 문자열 일부를 잘라 날짜를 만드는 코드는 제거했다.

const displayDate = new Intl.DateTimeFormat('ko-KR', {
  timeZone: 'Asia/Seoul', year: 'numeric', month: '2-digit', day: '2-digit'
}).format(new Date(post.publishedAt));

구조화 데이터에는 ISO 시각을 유지한다.

const jsonLd = {
  '@type': 'Article',
  datePublished: new Date(post.publishedAt).toISOString(),
  dateModified: new Date(post.updatedAt).toISOString()
};

검색 전 점검 순서

  1. DB 원본에 timezone 정보가 있는가
  2. API 응답과 화면 값이 같은 순간을 가리키는가
  3. time 요소와 JSON-LD를 각각 검사했는가
  4. sitemap lastmod의 의미를 고정했는가
  5. 검색 도구 재처리 지연을 고려했는가

테스트에는 UTC 23:59와 KST 자정 직후를 넣었다. 날짜를 SEO 장식으로 다루지 않고 같은 원본에서 표현을 파생시키는 것이 재발 방지 기준이다.