본문으로 건너뛰기
0
r/jeffnews HN 약 3분

Excel은 아직도 1900년을 윤년으로 처리한다 — 그리고 고칠 생각이 없다

general

요약

Excel이 1900년을 윤년으로 처리하는 것은 Lotus 1-2-3에서 시작된 의도적 버그. Microsoft는 호환성 때문에 이를 채택했고, 고쳤을 때의 피해가 더 크다고 판단해 40년 넘게 유지 중.

기사 전체 정리

Excel은 아직도 1900년을 윤년으로 처리한다 — 그리고 고칠 생각이 없다

  • 1900년은 윤년이 아님 (세기 연도는 400으로 나눠떨어져야 윤년). 그런데 Excel은 1900년 2월 29일이 존재한다고 가정하고 날짜를 계산함. 이 버그는 Lotus 1-2-3에서 시작된 유산
  • Lotus 1-2-3가 처음 출시됐을 때 1900년을 윤년으로 처리했는데, 이렇게 하면 윤년 처리 로직이 단순해지고 대부분의 날짜 계산에 실질적 영향이 없었기 때문. Microsoft Multiplan과 Excel이 출시될 때 Lotus 1-2-3와의 호환성을 위해 동일한 직렬 날짜 체계를 채택하면서 이 버그도 그대로 가져옴
  • Microsoft의 공식 입장: 기술적으로는 고칠 수 있지만, 고쳤을 때의 단점이 안 고쳤을 때의 단점보다 크다
  • 고치면 생기는 문제들:
    • 기존 모든 Excel 워크시트와 문서의 날짜가 하루 밀림. 이걸 수정하는 데 엄청난 시간과 노력이 필요
    • WEEKDAY 같은 함수의 반환값이 바뀌어서 수식이 깨질 수 있음
    • 다른 프로그램과의 직렬 날짜 호환성이 깨짐
  • 안 고치면 생기는 문제: WEEKDAY 함수가 1900년 3월 1일 이전 날짜에 대해서만 잘못된 값을 반환함. 대부분의 사용자가 이 범위의 날짜를 쓸 일이 없으니 사실상 영향 없음

ℹ️참고

> 2100년 같은 다른 세기 연도는 정확하게 처리함 (윤년 아님으로 올바르게 판단). 오직 1900년만 잘못 처리하는 것. Lotus 1-2-3 호환성이라는 이유로 40년 넘게 유지되고 있는 의도적 버그

핵심 포인트

  • 1900년은 윤년이 아니지만 Excel은 2월 29일이 존재한다고 가정
  • Lotus 1-2-3 호환성을 위해 Microsoft가 동일한 직렬 날짜 체계 채택
  • 수정 시 기존 모든 날짜가 1일 밀리고 함수 반환값 변경 → 비용이 더 큼
  • 영향 범위는 1900년 3월 1일 이전 날짜의 WEEKDAY 함수뿐

인사이트

하위 호환성을 위해 의도적으로 유지하는 버그의 교과서적 사례. 개발자라면 공감할 '고치는 것보다 안 고치는 게 나은' 레거시 이야기.

댓글

댓글

댓글을 불러오는 중...

general

버티컬 SaaS 만들려고 해충방제 기사 취직했던 썰.txt

SaaS 창업 아이디어 검증하려고 실제로 해충방제 업체에 취직해버린 미친 사람 등장. 13일 만에 자격증 따고 21일 만에 $30k ARR 클로징하는 레전드 행보. 결국 직접 회사 인수해서 처음부터 만들겠다는 결론.

general

Apple, 버그 안 고치고 '확인해봐' 요청 후 닫아버리는 거 실화?

개발자가 3년 전에 신고한 버그를 Apple이 묵묵부답으로 방치하다가, 갑자기 베타 버전에서 '버그 고쳐졌는지 확인해줘'라고 요청함. 근데 실제론 안 고쳤고, 확인 안 하면 그냥 닫겠다고 협박한 레전드 상황. Hacker News 터지고 나서야 Apple이 반응했는데 그것도 별 쓸모없는 sysdiagnose 요청임 ㅋㅋ

general

미국의 이란 전쟁, 왜 처음부터 망한 도박이었나 - 군사사학자 분석

군사사학자 브렛 데버로우가 미국의 이란 전쟁을 전략적 관점에서 분석했는데 결론은 '개망한 도박'임. 초기 정권붕괴 시나리오는 실패했고, 호르무즈 해협이 사실상 봉쇄되면서 미국은 진퇴양난에 빠진 상황. 전술적으론 이기고 있지만 전략적으론 얻은 게 없다는 게 핵심 주장임.

general

충돌 사고 테슬라 부품으로 내 책상 위에 Model 3 컴퓨터 올려놓기 ㄷㄷ

테슬라 버그바운티 참여하려고 eBay에서 사고 차량 부품 긁어모아서 Model 3 MCU+터치스크린을 책상 위에서 부팅시키는 데 성공한 개발자 이야기임. 케이블 하나 구하려다 PCB 태워먹고, 수리하고, 결국 차량 전체 배선 하네스까지 구매하는 험난한 여정 ㅋㅋ

general

AI 코딩 에이전트 때문에 소프트웨어가 개판 됐는데 아무도 모름

코딩 에이전트 등장 1년 만에 소프트웨어 품질이 심각하게 떨어지고 있다는 경고. 에이전트한테 다 맡기다 보니 코드베이스가 감당 안 되는 복잡성 덩어리로 변해가는 중. 필자는 '속도 좀 줄이고 인간이 다시 주도권 잡아야 함'이라고 주장함.