/
328.txt
121 lines (85 loc) · 7.37 KB
/
328.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
[13] [[計算機]]には、[[時計]]があります。[DFN[[RUBYB[システム[RUBY[時][と(ど)]][RUBY[計][けい]]]@en[system clock]]]]などと呼ばれています。
* 動作
[4] 次のような理由で、[[時計]]の値は非直感的に変化することがあります。
[FIG(list)[
- [5] [[時計]]はそもそも正確ではありません。
[[温度]]など[[物理的]]な理由で時刻の[[刻み幅][歩度]]が微妙に変化することがあります。
- [7] [[NTP]] により[[時刻が修正][時刻同期]]されることがあります。時間を飛ばしたり、過去に戻したりすることがあります。
- [6] [[利用者]]が手動で[[時刻]]を設定することがあります。時間を飛ばしたり、過去に戻したりすることがあります。
- [8] [[計算機]]・[[VM]] が一旦停止状態となり、その後復帰した時、時間が一気に進む (ようにみえる) ことがあります。
- [9] 時刻表示上、[[閏秒]]は存在しないものとして扱われるのが一般的です。
補正のため時刻の[[刻み幅][歩度]]が変化したり、一度に進んだり、過去に戻ったりすることがあります。
- [11] [[UTC]] でなく[[地方時][地方標準時]]を用いる場合、[[夏時刻]]の実施や[[標準時]]の変更などにより、
時間を進めたり戻したりすることがあります。
]FIG]
;; [3] [[time skew]]、[[time drift]] も参照。
[10] 狭義の[[システム時計]]の他に、[[プログラム]]上不便なこうした性質を除去した[[単調増加時計]]が[[プラットフォーム]]側で提供される場合もあります。
* 時間帯
[15] [[地方時][時間帯のない日時]]に設定する場合と、[[UTC]] に設定する場合があります。
;; [16] [[UTC]] に設定する場合、[[プラットフォーム]]側で必要に応じて[[利用者]]の[[時間帯]]に変換して[[表示]]します。
[17] 古めのシステムは、[[地方時][時間帯のない日時]]を採用していることが多いです。
[[Windows]] も[[地方時][時間帯のない日時]]を使っています。
[18] 最近のシステムは、[[UTC]] を採用していることが多いです。
多くの [[Unix]] 系システムは [[UTC]] を使っています。
[20] [[アプリケーション]]との関係性については、[[計算機システムにおける時差]]を参照。
[25] なお、ほとんどの場合 [[UTC]] とは[[閏秒のないUTC]] です。
* API
[FIG(short list)[ [12] [[システム時計]]にアクセスする [[API]]
- [CODE[gettimeofday]]
- [CODE[clock_gettime]]
- [CODE(perl)[time][time (Perl)]]
- [CODE[gmtime]]
- [CODE[localtime]]
- [[時計 (Web)]]
- [CODE[fn:current-dateTime]]
- [CODE[faketime]]
]FIG]
* 関連
[23] [[uptime]] も参照。
* メモ
[FIG(quote)[
[FIGCAPTION[
[1] [CITE@en[Time - ArchWiki]]
( ([TIME[2016-06-18 13:12:32 +09:00]]))
<https://wiki.archlinux.org/index.php/time>
]FIGCAPTION]
> The standard used by hardware clock (CMOS clock, the time that appears in BIOS) is defined by the operating system. By default, Windows uses localtime, Mac OS uses UTC, and UNIX-like operating systems vary. An OS that uses the UTC standard, generally, will consider CMOS (hardware clock) time a UTC time (GMT, Greenwich time) and make an adjustment to it while setting the System time on boot according to your time zone.
]FIG]
[2] [CITE@ja[カーネルにおけるタイマー事情 ~第2回 カーネル内の時刻/時間関連サブシステム~ | VA Linux Systems Japan株式会社]]
( ([TIME[2016-06-20 16:07:53 +09:00]]))
<http://www.valinux.co.jp/technologylibrary/document/linuxkernel/timer0002/>
[FIG(quote)[
[FIGCAPTION[
[14] [CITE[OpenVMS マニュアル | HPE 日本]]
([TIME[2017-01-26 22:15:04 +09:00]])
<http://h50146.www5.hpe.com/products/software/oe/openvms/manual/v83/html/C_RTL1/docu_031.html>
]FIGCAPTION]
> OpenVMS Version 7.0 以降, HP C RTL では日付/時刻サポート・モデルがローカル時刻ベースのモデルから UTC (協定世界時) ベースのモデルに変更されました。この結果,以前は実装することができなかった ANSI C/POSIX 機能を HP C RTL で実装することができるようになりました。 UTC 時刻ベースのモデルを導入したことで, HP C RTL は Tru64 UNIX の時刻関数の動作とも互換性を保持することができるようになりました。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[19] [CITE@ja[ゲーム内時間とWindows時間が連動して遅れる | 知識王(質問掲示板) | マビノギ]]
([TIME[2017-02-05 21:33:12 +09:00]])
<http://mabinogi.nexon.co.jp/community/knowledgeContent.asp?ty=&c1=4&c2=24&lv=1&od=&ix=14658&p=15>
]FIGCAPTION]
> 試しに朝Nortonをアンインストールし、mabinogiをやってみたら時間がずれなかったので、他のメーカーのものに切り替えたらこの問題は解決しました。
]FIG]
[21] [CITE@ja[IBM Knowledge Center - 時刻に関連した概念]]
([TIME[2017-03-18 18:26:53 +09:00]])
<https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_72/rzati/rzatitime.htm>
[27] [CITE@en[IBM PC Real Time Clock should run in UT]], [TIME[2020-08-12T10:54:41.000Z]], [TIME[2021-03-15T06:13:26.334Z]] <https://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html>
[26] [CITE[RealTimeIsUniversalの落とし穴にはまった: エンジニア徒然草]], [TIME[2021-03-15T06:13:00.000Z]] <http://mitaka1954.cocolog-nifty.com/blog/2012/01/realtimeisunive.html>
[22] [CITE@ja[Windows搭載の一部PCで時計が1時間早まる不具合が発生。MSが修正を発表するも原因は非公表 | スラド]]
([TIME[2017-04-05 20:41:06 +09:00]])
<https://srad.jp/story/17/04/05/054238/>
[FIG(quote)[
[FIGCAPTION[
[24] [CITE[IROIRO 1999a]]
([TIME[2018-05-19 22:29:12 +09:00]])
<https://web.archive.org/web/20000418193849/http://www.asahi-net.or.jp:80/~ez3k-msym/iroiro99a.htm>
]FIGCAPTION]
> まずシステム時計だが, Windows 95 ではタイムゾーンを変えても見かけの時刻は変化しないので, たとえばノートマシンを持って日本から米国に移動した場合, まずタイムゾーンを変えて, しかる後に時刻も合わせ直さなければならない。 いっぽう Windows NT 4.0 では, タイムゾーンを変更すれば, 自動的に時刻も変わってくれる。
> 次にファイルの時刻だが, Windows NT で NTFS を使った場合, タイムスタンプは UTC (GMT) で記録されているので, タイムゾーンを変えると自動的にファイルのタイムスタンプも変わる。 いっぽう (NT でも Win95/98 でも) FAT の場合はローカルタイムで記憶されているので, タイムゾーンを変えてもファイルの(見かけの)タイムスタンプは変わらない。
> ただし, Win32 API レベルでは, ファイルの日付はファイルシステムにかかわらず常に UTC で得られる。 ローカルタイムを得るには FileTimeToLocalFileTime API を呼んで変換してやらなければならない。
> 気になるのが CD-ROM である。 ISO 9660 では, タイムスタンプをローカルタイム + 時差(15分単位) を記録することになっている。 しかしこの時差の扱いは OS によって違うような気がする(未調査)。
]FIG]