/
616.txt
50 lines (34 loc) · 3.42 KB
/
616.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
[1] [DFN[秒未満]] ([DFN[秒の小数部]]) は、[[日時]]のうち、1[[秒]]に満たない[[時間]]の長さを表す部分です。
[3] 以前は[[秒]]精度 (またはそれよりも低い精度) でしか扱えない[[計算機システム]]や[[日時形式]]が一般的でしたが、
21世紀になって[[秒未満]]も扱えるものが増えてきました。
[2] 例えば [[RFC 3339の日付形式]]は Internet
標準として[[秒未満]]の記述を可能にしています。
また [[GNU]] [[diff]] の出力には秒未満の欄があります。
[[HTMLの日付形式]]や [[W3C-DTF]] でも[[秒の小数部]]を記述できます。
- [26] 但し書式として秒未満が扱えたとしても、それが正しいかどうかは別問題です。 (もちろん、秒以上の正確性の問題もありますが、秒未満はその細かさ故により精度に疑問があります。) 書式としての秒未満を扱えても、実際には内部で捨てている実装も少なくないでしょう。
- [27] 秒未満を書式又は内部的にも扱える実装であっても、 [[RFC 3339]] のように無限の精度を許したものをどう扱っているかは激しく実装依存と思われます。
- [28] それに、 [[RFC 3339 の日付形式]] (のようなもの) で秒未満が無い形式を、固定長として扱っている実装だって少なくは無い ([[XSLT]] スタイル・シートとか特に。) ですから、下手に秒未満を入れるとおかしくなる可能性も。
[6] [[W3C-DTF]] は、 [[W3C-DTF]] を採用する仕様の側で精度を規定でき、
無限の精度を認めても良いとしています。
[15] [CODE[:server-time]] は、[[ミリ秒]]精度を構文上要求しています。
[9]
[[TOMLの日時形式]]は、
[[実装規定]]の任意の[[精度]]を限界とすることを認め、
扱えない[[精度]]の入力は[[切り捨て]]ると規定しています。
また、最低でも[[ミリ秒]][[精度]]を扱えることを推奨しています。
[4] [[SQLの日時形式]]でも[[秒未満]]を扱えるよう拡張されたものがあります。
[5] いくつかの[[整数時刻系]]は、[[ミリ秒]]や[[ナノ秒]]など、[[秒]]より小さな[[単位]]の[[整数]]で[[日時]]を表しています。
[EG[
[7] [[JavaScript時刻]]は[[ミリ秒]]単位です。
]EG]
[8] [[Perl]] の [CODE[DateTime][DateTime.pm]] や [[Go][Go時刻]]、 [CODE[DOMHighResTimeStamp]] の初期仕様など、
21世紀に入ってから[[ナノ秒]]の精度が一般的となってきました。
[10]
[[C言語]]の [CODE[timespec]] は [[Unix time]] と[[ナノ秒]]の数の組で[[時刻]]を表します。
[11]
[[小数のUnix time]]が使われることもよくあります。
[14] [[Compact Time Format]]
[13] [CITE@ja[MessagePackフォーマット仕様にTimestamp型を追加 - Blog by Sadayuki Furuhashi]] ([TIME[2019-09-27 10:30:56 +09:00]]) <http://frsyuki.hatenablog.com/entry/2017/08/10/144310>
[12] [CITE@ja[Tanaka Akiraさんのツイート: "ちなみに、言語じゃないですが、高精度な時刻を扱える例としては SQLite, EXIF, pax が任意精度 (10進で小数点以下任意長)、DB2 が 1ps, NTPv4 が 2**-64秒単位などといった例があるようです。… "]]
([TIME[2019-09-27 10:30:22 +09:00]])
<https://twitter.com/tanaka_akr/status/895568110630993921>