仕様と根拠
2 つの日付システム
Excel の日付は、ある基準日からの日数(シリアル値)で保存されます。1900 システムは 1900-01-01 を 1 と数え、Windows の Excel の既定です。1904 システムは 1904-01-01 を 0 と数え、古い Mac の Excel の既定でした。同じ日付でもシリアル値は 1,462 日ずれ、2011-07-05 は前者で 40729、後者で 39267 です(Microsoft の説明)。
1900 年の閏年の扱い
Excel は 1900 年を閏年として扱います(Lotus 1-2-3 との互換のため。実際の暦では閏年ではありません)。そのため 1900 システムのシリアル値 60 は存在しない「1900-02-29」になり、このツールは変換せず警告します。61 以上は 1899-12-30 に日数を足し、1〜59 は 1899-12-31 に足して暦どおりの日付を出します。
時刻と上限
小数点以下は 1 日を 1 とした時刻の割合で、0.5 は 12:00:00 です。秒単位に丸めて ISO 8601 の日時(2011-07-05T12:00:00)で出します。年が 4 桁で表せる 9999-12-31 を上限とし、これを超える数値は日付ではないものとしてエラーにします。タイムゾーンは扱わず、表示は Excel と同じ現地時刻のままです。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| Microsoft サポート: Date systems in Excel | 2026年10月28日 | 1900 システムと 1904 システムの起点・2011-07-05 の値(40729 / 39267)・差 1,462 日 |
| Microsoft Learn: Excel incorrectly assumes that the year 1900 is a leap year | 2026年10月28日 | Excel は 1900 年を閏年と扱う・1900-03-01 より前は WEEKDAY が不正 |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- Excel の表示形式(和暦・曜日・「2011/7/5」など)ではなく、シリアル値(数字)だけを変換します。日付の文字を貼り付けても変換できません。
- 1900-03-01 より前の日付について、Excel の WEEKDAY 関数の曜日は不正になります。このツールは暦どおりの日付を出すため、Excel の画面の曜日とは合わないことがあります。
- タイムゾーン・夏時間は扱いません。小数部は現地時刻の時分秒としてそのまま ISO 8601 の形で出します(末尾に Z やオフセットは付けません)。
- Excel for Mac など、どちらの日付システムのファイルかは中身から判定できません。出どころで選んでください。選び間違えると 4 年と 1 日ずれます。
ご利用にあたって
- 日付の起点と 1900 年の扱いは Microsoft の公開説明にもとづきます。上限の 9999-12-31 は ISO 8601 の 4 桁の年にそろえたこのツールの設定で、Excel 本体の上限を示すものではありません。
- 契約・会計などに使う日付は、変換結果を元の資料と見比べて確認してください。