[4] 
[[XML Schema]] は、[[グレゴリオ暦]]の一種 (二種?) を採用していました。

* 仕様書

[REFS[
- [1] [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/#theSevenPropertyModel>
- [2] [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/#partial-implementation>
- [15] [CITE[OWL 2 Web Ontology Language Structural Specification and Functional-Style Syntax (Second Edition)]] ([TIME[2017-10-02 19:45:22 +09:00]]) <https://www.w3.org/TR/owl-syntax/#Time_Instants>
]REFS]

* データ型

[7] 次の[[データ型][XML Schemaデータ型]]がありました。

[FIG(short list)[ [8] 日時データ型
- [CODE[xs:duration]]
- [CODE[[[xs:dayTimeDuration]]]]
- [CODE[[[xs:yearMonthDuration]]]]
- [CODE[xs:dateTime]]
- [CODE[xs:dateTimeStamp]]
- [CODE[xs:time]]
- [CODE[xs:date]]
- [CODE[xs:gYearMonth]]
- [CODE[xs:gYear]]
- [CODE[xs:gMonthDay]]
- [CODE[xs:gDay]]
- [CODE[xs:gMonth]]
]FIG]

[16] [[OWL]] ではそのうち
[CODE[xs:dateTime]]
と
[CODE[xs:dateTimeStamp]]
を使っていました。 [SRC[>>15]]

[17] [[OWL]] での[[日時]]記述には他に [[OWL-Time]] がありました。

[18] [[GML]] は追加で
[CODE[gmlxbt:OrdDate]],
[CODE[gmlxbt:WeekDate]]
を定義しています。

* date/timeSevenPropertyModel

[3] [[XML Schemaデータ型]]は[[日時]]系各種[[データ型][XML Schemaデータ型]]
[WEAK[([CODE[xs:duration]] 系以外)]] の内部データモデルを
[DFN[date/timeSevenPropertyModel]]
と呼んでいます。

[FIG(list members)[
: [DFN[[CODE[·year·]]]] : [[整数]]またはなし
: [DFN[[CODE[·month·]]]] : [[整数]] [ [N[1]], [N[12]] ] またはなし
: [DFN[[CODE[·day·]]]] : [[整数]] [ [N[1]], [N[31]] ] ([CODE[·year·]] / [CODE[·month·]]
による制限あり) またはなし
: [DFN[[CODE[·hour·]]]] : [[整数]] [ [N[0]], [N[23]] ] またはなし
: [DFN[[CODE[·minute·]]]] : [[整数]] [ [N[0]], [N[59]] ] またはなし
: [DFN[[CODE[·second·]]]] : [[十進数]] [ [N[0]], [N[60]] ) またはなし
: [DFN[[CODE[·timezoneOffset·]]]] : [[整数]] [ [N[-840]], [N[840]] ] またはなし
]FIG]

* 暦法

[20] [[先発グレゴリオ暦]]の一種が用いられています。
[SEE[ [[先発グレゴリオ暦]] ]]

** 紀元前

[19] [[XML Schema 1.0]] では、[[0]]年は認められておらず、1年の前は-1年で、[[紀元前]]1年を表していました。

[21] [[XML Schema 1.1]] では、[[0]]年が認められ、1年の前は0年 ([[紀元前]]1年) で、その前が-1年
([[紀元前]]2年) を表すように変更されました [SRC[>>1]]。

[22] さらっと[[非互換変更]]していますね...
[SEE[ [[紀元前]] ]]

[10] [[RDF]] の世界では非互換変更のせいで困っているようです [SRC[>>9]]。

[REFS[
- [9] [CITE@en[Standardizing on XSD 1.1 datatypes · Issue #93 · w3c/sparql-12]] ([TIME[2019-05-31 18:12:30 +09:00]]) <https://github.com/w3c/sparql-12/issues/93>
]REFS]

** 閏秒

[5] [[正閏秒]]は表現できません [SRC[>>22]]。
[SEE[ [[閏秒のないUTC]] ]]

[6] [[UTC]] の[[日時]]を表現するが、[[正閏秒]]を表現することはできない [SRC[>>22]]
という解釈を採っています。[[負閏秒]]には言及がありません。

[REFS[
- [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]

* 演算

[26] [[EXSLT]] が [[XSLT1]] 向けの[[関数][XPath 1.0関数]]を規定していました
[SRC[>>25]]。

[27] [[XDM]] 向けにも大量の[[関数]]が規定されていました
[SRC[>>24]]。

[REFS[
- [25] [CITE[[[EXSLT]] - Dates and Times]], [TIME[2015-03-19 08:56:14 +09:00]] <http://exslt.org/date/index.html>
- [24] [CITE@EN[XPath and XQuery Functions and Operators 3.1]] ([TIME[2017-03-21 16:02:06 +09:00]]) <https://www.w3.org/TR/xpath-functions/#durations>
]REFS]

* XACML の関数

[29] [CITE@EN-US[eXtensible Access Control Markup Language (XACML) Version 3.0 Plus Errata 01]], [TIME[2017-07-12T16:00:00.000Z]], [TIME[2021-09-29T03:01:31.071Z]] <http://docs.oasis-open.org/xacml/3.0/errata01/os/xacml-3.0-core-spec-errata01-os-complete.html#_Ref248657098>

[30] [CITE@EN-US[eXtensible Access Control Markup Language (XACML) Version 3.0 Plus Errata 01]], [TIME[2017-07-12T16:00:00.000Z]], [TIME[2021-09-29T03:11:55.417Z]] <http://docs.oasis-open.org/xacml/3.0/errata01/os/xacml-3.0-core-spec-errata01-os-complete.html#_Ref179369163>

[32] [CITE@EN-US[XACML v3.0 Time Extensions Version 1.0]], [TIME[2020-02-13T17:00:00.000Z]], [TIME[2021-09-29T03:12:32.713Z]] <https://docs.oasis-open.org/xacml/xacml-3.0-time-extensions/v1.0/cs01/xacml-3.0-time-extensions-v1.0-cs01.html>

- [33] 
[DFN[[CODE[urn:oasis:names:tc:xacml:3.0:entity:time‑zone]]]]
-- [34] 
[CITE@EN-US[XACML v3.0 Time Extensions Version 1.0]], [TIME[2020-02-13T17:00:00.000Z]], [TIME[2021-09-29T03:15:26.997Z]] <https://docs.oasis-open.org/xacml/xacml-3.0-time-extensions/v1.0/cs01/xacml-3.0-time-extensions-v1.0-cs01.html#_Ref17460015>
-- [35] 
[CODE[xs:dayTimeDration]]。
-- [36] 
days, seconds, fractional seconds は 0 である[SHOULD[べき]]。
-- [37] 
[[絶対値]]が14時間[[以下]]である[SHOULD[べき]]。

- [38] 
[DFN[[CODE[urn:oasis:names:tc:xacml:3.0:data‑type:dayOfWeek]]]]
-- [39] [CITE@EN-US[XACML v3.0 Time Extensions Version 1.0]], [TIME[2020-02-13T17:00:00.000Z]], [TIME[2021-09-29T03:33:13.540Z]] <https://docs.oasis-open.org/xacml/xacml-3.0-time-extensions/v1.0/cs01/xacml-3.0-time-extensions-v1.0-cs01.html#_Ref17459911>
-- [40] 
[CODE[1]] ([[月曜日]]) - [CODE[7]] ([[日曜日]])
の後に省略可能な[[時差]] ([[XML Schema]] 式)



* ISO 8601 との関係

[13] [[ISO 8601のプロファイル]]ですが、 [[XML Schema]]
は [[ISO 8601]] を参照しつつ独自に規定する形となっていますから、
理論上の厳密な整合性には疑問が残ります。

[14] 紀元前の扱い (>>19) には [[ISO 8601]] への適合性に問題があります。

* 派生

[SEE[ [[IETFのXML日時形式]] ]]

[SEE[ [[GMLの日時形式]] ]]

[SEE[ [CODE[:GeneralDateTimeDescription]] ]]

[SEE[ [[Table Schemaの日時]] ]]

* 関連

[11] [[Web]] では一部の限られた領域で使われました。
[SEE[ [[Webの日時形式]] ]]

* メモ





[FIG(quote)[
[FIGCAPTION[
[28] [CITE[Ink Markup Language (InkML)]]
([TIME[2018-10-09 22:24:24 +09:00]])
<https://www.w3.org/TR/2011/REC-InkML-20110920/#trace>
]FIGCAPTION]

> duration = xsd:decimal
> The duration of this trace, in milliseconds.
> Required: no, Default: none
> timeOffset = xsd:decimal
> The relative timestamp or time-of-day for the start of this trace, in milliseconds.
> Required: no, Default: none

]FIG]
