숫자 1은 왜 1899년 12월 31일일까?

숫자 1은 왜 1899년 12월 31일일까?
Photo by insung yoon / Unsplash

엑셀이나 구글 시트, 태블로에서 날짜를 숫자로 변환하면 1이라는 값이 특정 날짜를 의미하게 됩니다. 그런데 엑셀에서는 1 = 1900년 1월 1일인 반면, 구글 시트와 태블로에서는 1 = 1899년 12월 31일로 표시됩니다. 같은 숫자임에도 날짜가 다르게 나오는 이유는 무엇일까요?


날짜를 숫자로 계산하는 방식

스프레드시트 프로그램에서는 날짜를 계산 가능하도록 기준일로부터의 일수(시리얼 넘버)로 변환합니다. 예를 들어:

  • 엑셀: 1 = 1900-01-01, 2 = 1900-01-02
  • 구글 시트: 1 = 1899-12-31, 2 = 1900-01-01

이처럼 두 프로그램은 기준일이 서로 다르며, 그 차이는 1900년 2월 29일이라는 ‘존재하지 않는 날짜’에서 비롯됩니다.


엑셀: 윤년 오류를 포함한 역사적 호환성

엑셀은 초기 스프레드시트인 Lotus 1-2-3와의 호환성을 유지하기 위해 1900년을 윤년으로 잘못 간주했습니다. 실제로는 윤년이 아님에도, 1900-02-29라는 날짜를 포함하고 있는 것입니다.
이로 인해 엑셀의 날짜 시리얼 넘버는 1900년 3월 1일 이전까지는 하루씩 밀린 값을 반환합니다.


구글 시트: 정확한 그레고리력 기준 적용

반면 구글 시트는 이 윤년 오류를 제거하고, 실제 달력에 맞춘 기준을 사용합니다. 따라서 시리얼 넘버 60은 1900년 2월 28일이고, 61은 1900년 3월 1일입니다. 이로 인해 기준점 자체가 엑셀보다 하루 빠른 1899년 12월 31일로 설정되어 있습니다.


시리얼 넘버 엑셀 날짜 구글 시트 날짜
1 1900-01-01 1899-12-31
59 1900-02-28 1900-02-27
60 1900-02-29 (존재하지 않음) 1900-02-28
61 1900-03-01 1900-03-01
💡
엑셀과 구글 시트의 날짜는 1900년 3월 1일 이후부터는 동일하게 계산됩니다.