-
Notifications
You must be signed in to change notification settings - Fork 4
/
569.txt
174 lines (122 loc) · 8.74 KB
/
569.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
[1]
[DFN[[RUBYB[先発グレゴリオ暦]@en[proleptic Gregorian calendar]]]]は、
[[グレゴリオ暦]]を[[過去]]に延長して適用したものです。
[2]
[[グレゴリオ暦]]は[[18世紀]]以後各[[国]]で順次採用されていきました。
それ以前には[[ユリウス暦]]や[[日本の旧暦]]など、
異なる[[暦法]]が採用されていました。
ですから、[[歴史]]的な視点から[[過去]]の[[日付]]を記述するなら、
当時の[[暦法]]に従って表記するべきです。
しかし実際にはそれでは都合が悪いことも少なくありません
([[暦の換算]]も参照)。
[[先発グレゴリオ暦]]は、すべての時期を[[グレゴリオ暦]]に統一して扱うものです。
* 仕様書
[REFS[
- [23] '''[[ISO 8601:2004]]'''
- [9] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-03-09 02:02:33 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#proleptic-gregorian-date>'''
- [11] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2013-03-09 02:02:33 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#global-dates-and-times>
- [22] [CITE@EN[W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes]]
( ([TIME[2012-04-04 21:34:51 +09:00]] 版))
<http://www.w3.org/TR/xmlschema11-2/#dt-utc>
]REFS]
* 紀元前
[16] [[紀元前]]の扱いについて、「先発グレゴリオ暦」の定義によって違いがあります。
「0年」を置く定義と、置かない定義があります。
;; [[紀元前]]参照。
* 文脈
** 科学
@@
** 計算機処理
[14] [[計算機]]上の処理を考えると、
[[グレゴリオ暦]]より前の[[過去]]の[[日付]]を扱うことはあまりなく、
[[改暦]]を考慮した場合分けを行うのは対価が大きすぎます。
[[国]]によって[[改暦]]の時期が異なること、
更に時代を遡れば様々な[[暦]]が使われていたことを考慮すると、
かなり複雑な仕組みが必要になります。
そこで、[[過去]]も含めてすべて[[グレゴリオ暦]]で統一した[[先発グレゴリオ暦]]が使われることがよくあります。
;; [26] [[グレゴリオ暦]]は単純な規則で[[年]]内の[[月]]と[[日]]が定まり、
しかも[[過去]]と[[未来]]に無限に延長できるので、
[[計算機]]上では非常に扱いやすいです。この点、[[改暦]]があると処理が複雑になるのはもちろん、
[[ユリウス暦]]は初期に[[閏年]]が正しく運用されなかった期間があること、
[[日本]]の[[旧暦]]は[[天体]]の運行を観測しないと[[月]]と[[日]]を決定できないため[[現在]]から遠い[[時刻]]を扱うのが難しいことなどの問題があります。
* ISO 8601
[24] [[グレゴリオ暦]]導入前の[[先発グレゴリオ暦]]の[[日付]]は、
[[情報交換の当事者間の事前の同意]]がある場合に限って用いるべきです
[SRC[>>23 3.2.1]]。
* Web 暦
[4] [[HTMLの日付形式]]では[[先発グレゴリオ暦]]が採用されています。
[29] [[HTML年]]も参照。
** 定義
[12] 「[[先発グレゴリオ暦]]」は次の通り定義されています [SRC[>>9]]。
[FIG(quote)[
[8]
>Where this specification refers to the [DFN[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
[DFN[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.
>この仕様書が[DFN[先発グレゴリオ暦]]と言う時、現代[[グレゴリオ暦]]を年1に遡って[[外挿]]したものを意味します。
[[先発グレゴリオ暦]]による[[日付]]は[DFN[先発グレゴリオ日]]と呼ぶこともありますが、
その時間 (や場所) で[[グレゴリオ暦]]を使っていなかったとしても[[グレゴリオ暦]]を使って表した[[日付]]となります。
]FIG]
** UTC 以前の時刻
[10] 「[[先発グレゴリオ暦]]」の定義には含まれていませんが、[[大域的日時]]に関して [[UTC]]
制定以前の[[時刻]]が次のように規定されています [SRC[>>11]]。
[FIG(quote)[
[13]
>Times in dates before the formation of UTC in the mid twentieth century [MUST[must]] be expressed and interpreted in terms of UT1 (contemporary Earth solar time at the [LON[0°][0]] longitude), not UTC (the approximation of UT1 that ticks in SI seconds). Time before the formation of time zones [MUST[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]] (当時の[LON[経度0°][0]] での[[地球]]上の[[太陽時]])
により表現・解釈しなければ[MUST[なりません]]。
[[時間帯]]が制定される前の[[時刻]]は、当時の適当な[[地方時]]と[[ロンドン]]の[[グリニッジ]]の位置で観測された[[時刻]]の[[時差]]を近似した[[時間帯]]を明記した
[[UT1]] の[[時刻]]により表現・解釈しなければ[MUST[なりません]]。
]FIG]
[27] なお、 [[Webの日時形式]]では[[閏秒]]を扱えませんから、厳密に言えば
[[UTC]] の制定後も用いる[[時刻系]]は [[UTC]] ではなく、[[閏秒のないUTC]]です。
** 歴史
[REFS[
- [3] [CITE@en[Web Applications 1.0 r5913 Change what was non-normatively implied to be proleptic UTC to explicitly and normatively be proleptic UT1.]] ([TIME[2011-02-25 16:52:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=5912&to=5913>
- [6] [CITE@en[Web Applications 1.0 r7740 Clarify use of the term 'proleptic'.]] ([TIME[2013-03-08 08:40:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7739&to=7740>
]REFS]
[5] >>10 の定義は >>3 で追加されました。
[7] >>8 の定義は >>6 で追加されました。それまでは定義なく使っていました。
* SQL
[18] [[SQL]] でも[[先発グレゴリオ暦]]が用いられています。
[19] 0年は特別な意味で使っています。
;; [[SQLの日時形式]]参照。
[FIG(quote)[
[FIGCAPTION[
[28] [CITE[単位の歴史]]
([TIME[2017-01-05 22:28:14 +09:00]])
<https://www.postgresql.jp/document/9.4/html/datetime-units-history.html>
]FIGCAPTION]
> 標準SQLでは、「"日付時刻リテラル"定義の中で、"日付時刻の値"はグレゴリオ暦に従った日付と時間の自然法則に則る」と明記されています。 PostgreSQLは標準SQLの指針に従い、グレゴリオ暦が使われる以前の年に対してもグレゴリオ暦で日付を数えます。 この規則は先発グレゴリオ暦として知られています。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[17] [CITE@en[MySQL :: MySQL 8.0 Reference Manual :: 13.8 What Calendar Is Used By MySQL?]]
([TIME[2017-03-10 16:38:11 +09:00]])
<https://dev.mysql.com/doc/refman/8.0/en/mysql-calendar.html>
]FIGCAPTION]
> 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.
]FIG]
* 関連
[25] [[JIS X 0301]] は [[ISO 8601]] に対応する [[JIS]] ですが、[[元号]]による表記を追加しています。
しかし、[[明治6年]]の[[改暦]]以前は[[適用範囲]]外としていて、
[[先発グレゴリオ暦]]と同様な現行暦による[[元号]]の過去への拡張は行っていません。
附属書1 ([[参考]]) では[[明治6年]]以前の日付に関して[[元号]]による[[天保暦]]に基づく表記と[[西暦年号]]による[[グレゴリオ暦]]に基づく表記を対応付けています。
* メモ
[15] [CITE@ja[先発グレゴリオ暦 - Wikipedia]]
( ([TIME[2014-05-01 11:38:14 +09:00]] 版))
<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>
[FIG(quote)[
[FIGCAPTION[
[20] [CITE[time - The Go Programming Language]]
([TIME[2017-03-10 18:03:29 +09:00]])
<https://golang.org/pkg/time/>
]FIGCAPTION]
> The calendrical calculations always assume a Gregorian calendar, with no leap seconds.
]FIG]
[21] [CITE[Extending <chrono> to Calendars and Time Zones]]
([TIME[2017-12-21 16:00:57 +09:00]])
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r4.html>