先発グレゴリオ暦

先発グレゴリオ暦

[1] 先発グレゴリオ暦 (proleptic Gregorian calendar) は、 グレゴリオ暦過去に延長して適用したものです。

[2] グレゴリオ暦18世紀以後各で順次採用されていきました。 それ以前にはユリウス暦日本の旧暦など、 異なる暦法が採用されていました。 ですから、歴史的な視点から過去日付を記述するなら、 当時の暦法に従って表記するべきです。 しかし実際にはそれでは都合が悪いことも少なくありません (暦の換算も参照)。 先発グレゴリオ暦は、すべての時期をグレゴリオ暦に統一して扱うものです。

仕様書

紀元前

[16] 紀元前の扱いについて、「先発グレゴリオ暦」の定義によって違いがあります。 「0年」を置く定義と、置かない定義があります。

紀元前参照。

文脈

科学

計算機処理

[14] 計算機上の処理を考えると、 グレゴリオ暦より前の過去日付を扱うことはあまりなく、 改暦を考慮した場合分けを行うのは対価が大きすぎます。 によって改暦の時期が異なること、 更に時代を遡れば様々なが使われていたことを考慮すると、 かなり複雑な仕組みが必要になります。

そこで、過去も含めてすべてグレゴリオ暦で統一した先発グレゴリオ暦が使われることがよくあります。

[26] グレゴリオ暦は単純な規則で内のが定まり、 しかも過去未来に無限に延長できるので、 計算機上では非常に扱いやすいです。この点、改暦があると処理が複雑になるのはもちろん、 ユリウス暦は初期に閏年が正しく運用されなかった期間があること、 日本旧暦天体の運行を観測しないとを決定できないため現在から遠い時刻を扱うのが難しいことなどの問題があります。

ISO 8601

[24] グレゴリオ暦導入前の先発グレゴリオ暦日付は、 情報交換の当事者間の事前の同意がある場合に限って用いるべきです >>23 3.2.1

Web 暦

[4] HTMLの日付形式では先発グレゴリオ暦が採用されています。

[29] HTML年も参照。

定義

[12]先発グレゴリオ暦」は次の通り定義されています >>9

[8]

Where this specification refers to the proleptic Gregorian calendar, it means the modern Gregorian calendar, extrapolated backwards to year 1. A date in the proleptic Gregorian calendar, sometimes explicitly referred to as a proleptic-Gregorian date, is one that is described using that calendar even if that calendar was not in use at the time (or place) in question.

この仕様書が先発グレゴリオ暦と言う時、現代グレゴリオ暦を年1に遡って外挿したものを意味します。 先発グレゴリオ暦による日付先発グレゴリオ日と呼ぶこともありますが、 その時間 (や場所) でグレゴリオ暦を使っていなかったとしてもグレゴリオ暦を使って表した日付となります。

UTC 以前の時刻

[10]先発グレゴリオ暦」の定義には含まれていませんが、大域的日時に関して UTC 制定以前の時刻が次のように規定されています >>11

[13]

Times in dates before the formation of UTC in the mid twentieth century must be expressed and interpreted in terms of UT1 (contemporary Earth solar time at the longitude), not UTC (the approximation of UT1 that ticks in SI seconds). Time before the formation of time zones must be expressed and interpeted as UT1 times with explicit time zones that approximate the contemporary difference between the appropriate local time and the time observed at the location of Greenwich, London.

20世紀中頃に UTC が制定される以前の日付における時刻UTC (SI により進行する UT1 の近似) ではなく UT1 (当時の経度0° での地球上の太陽時) により表現・解釈しなければなりません時間帯が制定される前の時刻は、当時の適当な地方時ロンドングリニッジの位置で観測された時刻時差を近似した時間帯を明記した UT1時刻により表現・解釈しなければなりません

[27] なお、 Webの日時形式では閏秒を扱えませんから、厳密に言えば UTC の制定後も用いる時刻系UTC ではなく、閏秒のないUTCです。

歴史

[5] >>10 の定義は >>3 で追加されました。

[7] >>8 の定義は >>6 で追加されました。それまでは定義なく使っていました。

SQL

[18] SQL でも先発グレゴリオ暦が用いられています。

[19] 0年は特別な意味で使っています。

[28] 単位の歴史 () <https://www.postgresql.jp/document/9.4/html/datetime-units-history.html>

標準SQLでは、「"日付時刻リテラル"定義の中で、"日付時刻の値"はグレゴリオ暦に従った日付と時間の自然法則に則る」と明記されています。 PostgreSQLは標準SQLの指針に従い、グレゴリオ暦が使われる以前の年に対してもグレゴリオ暦で日付を数えます。 この規則は先発グレゴリオ暦として知られています。

[17] MySQL :: MySQL 8.0 Reference Manual :: 13.8 What Calendar Is Used By MySQL? () <https://dev.mysql.com/doc/refman/8.0/en/mysql-calendar.html>

A calendar applied to dates when it was not actually in use is called proleptic. Thus, if we assume there was never a cutover and Gregorian rules always rule, we have a proleptic Gregorian calendar. This is what is used by MySQL, as is required by standard SQL.

関連

[25] JIS X 0301ISO 8601 に対応する JIS ですが、元号による表記を追加しています。 しかし、明治6年改暦以前は適用範囲外としていて、 先発グレゴリオ暦と同様な現行暦による元号の過去への拡張は行っていません。 附属書1 (参考) では明治6年以前の日付に関して元号による天保暦に基づく表記と西暦年号によるグレゴリオ暦に基づく表記を対応付けています。

メモ

[15] 先発グレゴリオ暦 - Wikipedia ( ( 版)) <http://ja.wikipedia.org/wiki/%E5%85%88%E7%99%BA%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%AA%E3%82%AA%E6%9A%A6>

[20] time - The Go Programming Language () <https://golang.org/pkg/time/>

The calendrical calculations always assume a Gregorian calendar, with no leap seconds.

[21] Extending <chrono> to Calendars and Time Zones () <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r4.html>