Skip to content

Ptium v1.69.29

Choose a tag to compare

@hkjang hkjang released this 08 Sep 17:50
· 29 commits to main since this release

Ptium 1.69.29

납기 2025-01-21 이 슬라이드에는 2021-01-20 으로 적혔습니다

엑셀은 날짜를 날짜로 저장하지 않고 어느 날부터 며칠째인지로 저장합니다.
그 "어느 날"이 통합 문서마다 다릅니다 — 윈도 엑셀은 1900년부터, 맥 엑셀은
1904년부터 셉니다. 어느 쪽인지는 xl/workbook.xmlworkbookPr date1904
적혀 있고, 리더는 그 스위치를 읽지 않았습니다.

통합 문서:  맥 엑셀이 쓴 계약서 (date1904="1")
시트:       납기 | 2025-01-21
이전:       납기 | 2021-01-20     ← 4년 하고 하루 이른 날
지금:       납기 | 2025-01-21

틀린 티가 나지 않는 것이 이 문제의 나쁜 점입니다. 2021-01-20 은 날짜처럼
생겼고, 게다가 그 슬라이드에는 어느 시트에서 가져왔는지 출처까지 달려 있어
보고서처럼 보입니다. 맥에서 만든 통합 문서는 열어 보는 사람이 윈도든 맥이든
계속 1904년부터 세므로, 한 번 그렇게 쓰인 파일은 어디로 가도 그대로입니다.

이제 date1904 가 날을 세기 시작하는 날을 정하고, 날짜를 적는 일은
dayShown 한 곳에서 두 체계를 함께 다룹니다. 1true 를 스위치로 보고,
아무 말이 없는 통합 문서는 전과 같이 1900년부터 셉니다.

1900년 2월 29일이라는 없는 날

1900년부터 세는 쪽에는 사연이 하나 더 있습니다. 이 체계는 1900-02-29 라는,
달력에 없는 날을 하루 세고 넘어갑니다. 옛 스프레드시트가 윤년을 잘못 잡은 것을
그 뒤로 모든 리더가 그대로 지켜 왔기 때문입니다 — 사람들이 이미 갖고 있던 날
수가 계속 같은 날을 뜻하게 하려고.

리더는 그 없는 날을 1900년 3월부터만 지켰으므로, 그 앞은 어긋나 있었습니다.

일련번호 1:   이전 1899-12-31   지금 1900-01-01
일련번호 59:  이전 1900-02-27   지금 1900-02-28
일련번호 60:  이전 1900-02-28   지금 1900-02-29   ← 59와 같은 날로 나오던 그 날

이제 셋 다 시트가 보여 주는 날을 말합니다.

날짜에 시각이 붙은 셀

날짜+시각(yyyy-mm-dd hh:mm)도 같은 날 계산을 쓰므로 두 체계에서 모두 맞습니다.
덤으로, 초 단위 반올림을 날을 떼어내기 전에 하도록 바꾸어 자정 직전의
한순간이 "24:00" 이 아니라 다음 날 "00:00" 으로 넘어갑니다.

지키는 장치

internal/docs/sheetdays_test.go 가 1904 체계 서식 9가지, 1900 체계 서식
6가지, counts1904 스위치 7가지를 보고, 맥 엑셀이 쓴 통합 문서와 그렇지 않은
통합 문서를 통째로 읽어 같은 일련번호가 각각 어느 날로 나오는지를 봅니다.
옛 기대값을 담고 있던 TestTheDayTheCountRunsFrom 도 시트가 보여 주는 날로
고쳤습니다.