[21] 
[TIME[1899-12-31]]を[[初日][元期]] (値 [N[1]]) とする[[整数時刻系]]は
[DFN[1900 date system]]
などと呼ばれます。

-*-*-


[2] [[Lotus 1-2-3]] は[[グレゴリオ暦]]を採用していますが、
[TIME[西暦1900年][1900]]は[[閏年]]としていました。
[[グレゴリオ暦]]に存在しない[[閏日]]西暦1900年2月29日が挿入されるため、
取り扱い可能な最初の日である1900年1月1日から1900年2月28日までが、
[[グレゴリオ暦]]とは1日ずれています。

[3] [[誤方互換性]]のため、 [[Microsoft Excel]] がこれを踏襲しています [SRC[>>1]]。

[22] 
便宜上[DFN[Lotus 1-2-3暦]]などと呼ばれます。

;; [23] [[ユリウス暦置閏法]]なのかもしれませんが、[[ユリウス暦]]とは[[日付]]が違います。

[REFS[
- [1] [CITE@en-us[Excel incorrectly assumes that the year 1900 is a leap year]]
([TIME[2017-01-09 16:16:35 +09:00]])
<https://support.microsoft.com/en-us/kb/214326>
]REFS]

[4] [CITE@ja-jp[Excel の 1900 年を基準とした日付方式と 1904 年を基準とした日付方式の違いについて]]
([TIME[2017-01-09 17:58:02 +09:00]])
<https://support.microsoft.com/ja-jp/kb/214330>

[5] [CITE@en-us[Days of the week before March 1, 1900 are incorrect in Excel]]
([TIME[2017-01-09 17:59:57 +09:00]])
<https://support.microsoft.com/en-us/kb/214058>

[20] 
[[Microsoft Access]] も内部表現で同じ形式を採用していますが、
表示は[[先発グレゴリオ暦]]を使っています。
[SEE[ [[SQLの日時形式]] ]]

[FIG(quote)[
[FIGCAPTION[
[6] [CITE@ja[Excelだけに存在する日付 | ユニリタブログ]]
([TIME[2017-03-10 18:24:20 +09:00]])
<http://www.unirita.co.jp/blog/data-utilization/data-linkage/20141202.html>
]FIGCAPTION]

> この記載によると、Office Open XML形式ファイルの仕様上は、(マイナス数値を使って)0001/01/01から扱うことができ、「1900/02/29」は存在しないことになっています(なので、1900/02/28より前の日付において、仕様とExcelの実装には差異があります)。過去の「ECMA-376」では、「1900/02/29」は「古い表計算ソフトとの互換のため」として定義があったと記憶しているので、版が進んだことでその仕様は無くなったようです。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[7] [CITE@ja[Excelだけに存在する日付 | ユニリタブログ]]
([TIME[2017-03-10 18:24:20 +09:00]])
<http://www.unirita.co.jp/blog/data-utilization/data-linkage/20141202.html>
]FIGCAPTION]

> 「1900年から計算する」設定で数値「0」を日付に変換すると…
> 1900/1/0
>  
> これまた困った日付に…

]FIG]

[FIG(quote)[
[FIGCAPTION[
[8] [CITE[Standard ECMA-376]] ([TIME[2017-02-28 21:46:40 +09:00]]) <http://www.ecma-international.org/publications/standards/Ecma-376.htm>
[CITE[ECMA-376 1st edition Part 4]]
1919ページ
]FIGCAPTION]

> date1904 (Date 1904)
> Specifies a boolean value that indicates whether the date systems used in the workbook
starts in 1904.
> A value of on, 1, or true indicates the date system starts in 1904.
> A value of off, 0, or false indicates the workbook uses the 1900 date system, where
1/1/1900 is the first day in the system.
> The default value for this attribute is false.
> The possible values for this attribute are defined by the XML Schema boolean datatype.
]FIG]

[FIG(quote)[
[FIGCAPTION[
[9] [CITE@en[DateTime.ToOADate Method (System)]]
([TIME[2017-03-10 19:18:09 +09:00]])
<https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx>
]FIGCAPTION]

> An OLE Automation date is implemented as a floating-point number whose integral component is the number of days before or after midnight, 30 December 1899, and whose fractional component represents the time on that day divided by 24. For example, midnight, 31 December 1899 is represented by 1.0; 6 A.M., 1 January 1900 is represented by 2.25; midnight, 29 December 1899 is represented by -1.0; and 6 A.M., 29 December 1899 is represented by -1.25.
> The base OLE Automation Date is midnight, 30 December 1899. The minimum OLE Automation date is midnight, 1 January 0100. The maximum OLE Automation Date is the same as DateTime.MaxValue, the last moment of 31 December 9999.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[10] [CITE@en-US[How to recognize different types of timestamps from quite a long way away – The Old New Thing]]
([TIME[2017-03-10 19:18:25 +09:00]])
<https://blogs.msdn.microsoft.com/oldnewthing/20030905-02/?p=42653/>
]FIGCAPTION]

> The OLE automation date format is a floating point value, counting days since midnight 30 December 1899. Hours and minutes are represented as fractional days.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[11] [CITE@ja[グレゴリオ暦?ユリウス暦? データベースによって異なる、日付時刻型が扱える範囲 | ユニリタブログ]]
([TIME[2017-03-10 18:24:03 +09:00]])
<http://www.unirita.co.jp/blog/data-utilization/data-linkage/20141216.html>
]FIGCAPTION]

> Accessの場合、内部数値の「0」は「1899/12/30」を表します。Accessの日付/時刻型に時刻だけ入れたときに、「1899/12/30」が表示されたことのあるかたもいらっしゃると思います。
> Excelと1日分ずれている理由は、
> 1900/03/01から9999/12/31までの日付は、ExcelもAccessも同じ内部数値
> 1900/02/29はAccessに存在しないので、1900/02/28以前は内部数値が1ずれる
> そのため、1900/01/01は、Excelは「1」で、Accessは「2」
> そこから2日さかのぼると、「1899/12/30」
>  
> です。
> それ以前の日にちは、マイナスの内部数値で持っています。
> (内部数値的には扱えるのに、)西暦100年以降しか扱えないのは、西暦2桁入力のためだと思います<例>99/12/30→1999/12/30と認識
> (確証はありませんが、Lotusの日付の扱いもそうであったので、おそらく)。
> Microsoft Accessでは、全期間にわたってグレゴリオ暦として扱われます。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[12] [CITE@ja[1月0日 - Wikipedia]]
([TIME[2018-02-19 13:04:43 +09:00]])
<https://ja.wikipedia.org/wiki/1%E6%9C%880%E6%97%A5>
]FIGCAPTION]

> マイクロソフト・エクセルによる1900年日付様式によれば、1900年1月0日はJanuary 0, 1900と表示された'''['''3''']'''(これはもともと、Lotus 1-2-3とのバグ互換のために入っていた調整に由来する。

]FIG]

[13] [CITE@ja-jp[Microsoft Access で日付/時刻型の値の格納、計算、および比較を行う方法]] ([TIME[2019-05-11 13:05:06 +09:00]]) <https://support.microsoft.com/ja-jp/help/210276/how-to-store-calculate-and-compare-date-time-data-in-microsoft-access>


[14] [CITE@ja[うるう年とは何?と聞かれて困らないための雑学! | リケジョ、主婦になる]], [TIME[2021-03-01T02:45:44.000Z]] <https://dorashine.com/2480.html#toc14>

>というのも、日本で一般的なグレゴリオ暦のうるう年の計算方法は、一番最初の「4年に一度」という部分しかプログラムに書き込まれておらず、100で割れる年・400年で割れる年の例外が省かれて処理されている場合があります。
>
この最たる例がExcelです。
>
と言っても、私が使っているExcelちょっと古いので(2010)、現在は修正されている可能性もありますが、たった10年前までプログラムがかかれていなかったというのは逆に驚きかなぁと思います。

>Excelですらコレなので、安い卓上カレンダーなんかは推して知るべしかなぁと思います。
>
しかし100と400の法則を追加するとプログラムがややこしいことになるし、実際に次の例外2100年までその卓上デジタルカレンダー使えるだろうか?って言うと微妙なので・・・別に気にしなくてもいいかなぁという気はいたします。

[15] 実際に Excel で1900年を試してみた画像あり。2100年も試してみたら別の結論を導けただろうに、惜しい!




[FIG(quote)[
[FIGCAPTION[
[16] [CITE@en[PDB (Palm OS) - Wikipedia]]
([TIME[2021-05-10T08:12:27.000Z]], [TIME[2021-05-24T08:15:21.824Z]])
<https://en.wikipedia.org/wiki/PDB_(Palm_OS)#PDB_Datetimes>
]FIGCAPTION]

> Some sources even suggest some very old files may use times counting from 1900 (which would be consistent with the Excel epoch).

]FIG]



-
[17] [CITE[My First BillG Review - Joel on Software]], [TIME[2021-09-08T08:30:49.000Z]], [TIME[2012-05-29T06:58:41.431Z]] <https://web.archive.org/web/20120529015804/http://www.joelonsoftware.com/items/2006/06/16.html>
-
[18] [CITE@en[はじめてのBillGレビューのこと - The Joel on Software Translation Project]], [TIME[2021-09-08T08:31:10.000Z]], [TIME[2012-05-27T14:41:16.366Z]] <https://web.archive.org/web/20120527092433/http://local.joelonsoftware.com/wiki/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AEBillG%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AE%E3%81%93%E3%81%A8>


[19] [CITE@ja[コロナの陽性判明日が“明治33年”になってて自宅療養期間が122年になってしまった人「文明開化の音がするw」「スペイン風邪より前」 - Togetter]], [TIME[2022-04-11T02:12:19.000Z]] <https://togetter.com/li/1871385>



[24] 
西暦1900年1月1日ないし0日を[[元期]]とする[[日時系]]は他にもいろいろあります。
[SEE[ [[元期]] ]]

[26] 
[CITE@en-US[Excel specifications and limits - Microsoft Support]], [TIME[2023-11-25T11:33:14.000Z]] <https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3>

>
,Earliest date allowed for calculation,"January 1, 1900 (January 1, 1904, if 1904 date system is used)"
,Latest date allowed for calculation,"December 31, 9999"
,Largest amount of time that can be entered,9999:59:59





[25]
[[1万年問題]]





- [27] [CITE@ja[Xユーザーの㊤里予日月さん: 「#事務ミス選手権 事務員通話)もしもし上野君確認だけど、明治36年に上野君が発注してる原料が来週入ってくるけど中身大丈夫? https://t.co/0pOoMFs46m」 / X]], [TIME[午前1:27 · 2024年2月18日][2024-02-17T16:27:56.000Z]], [TIME[2024-02-21T05:26:01.000Z]] <https://twitter.com/akijzx100/status/1758891038402576661>
-- [28] [CITE@ja[Xユーザーのmadcrowさん: 「@akijzx100 @terasu3211 F外から失礼、 エクセルで「1204」と入力してから、 右クリックの「セルの書式設定」、 「表示形式」を「日付」に変更してみて下さい。 シリアル値で変換されると、そんな事が起こります。」 / X]], [TIME[午後1:54 · 2024年2月19日][2024-02-19T04:54:32.000Z]], [TIME[2024-02-21T05:26:01.000Z]] <https://twitter.com/madcrow1374/status/1759441314968486328>



[29] 
令和6年 → 令和対応してなくて平成36年 → 元号間違えて(?)明治36年、って想像したけど全然違った


[30] [CITE@ja[Excel の 1900 年を基準とした日付方式と 1904 年を基準とした日付方式の違いについて]]
([TIME[2015-05-09 10:53:45 +09:00]] 版)
<https://support.microsoft.com/ja-jp/kb/214330/ja>

[31] [CITE@ja[1900 年 3 月 1 日の前に曜日が Excel で正しくないです。]]
([TIME[2015-05-09 10:54:16 +09:00]] 版)
<https://support.microsoft.com/ja-jp/kb/214058>


[32] 関連: [[閏年バグ]],
[[TRON時間]]


