[11] [[Web]] でも[[時計]]は重要です。

* システム時計

[1] 次の機能は[[システム時計]] (によって表される実際の[[日時]]) へのアクセスを提供するものです。
[FIG(short list)[
- [[現在時刻]]
]FIG]


[19] 次の機能では、[[プラットフォームの時差]]の情報も必要です。
[FIG(short list)[
- [CODE(JS)@en[new Date]]
]FIG]

* 単調増加時計

[4] 次の機能は[[単調増加]]の[[時計]] ([[monotonic clock]]) へのアクセスを提供するものです。
[FIG(middle list)[
- [[現在高分解能時刻]]
-- [CODE(DOMi)@en[Performance]] API
-- [CODE(DOMm)@en[requestAnimationFrame]]
]FIG]

;; [13] [[プラットフォーム]]によっては[[単調増加時計]]も[[プラットフォーム]]側 [[API]]
で提供されています。

* タイマー

[5] 次の機能は一定時間 (以上) の経過を待ちます。

[FIG(list)[
- [102] [CODE(DOMm)@en[[[setTimeout]]]], [CODE(DOMm)@en[[[setInterval]]]]
- [CODE(DOMm)@en[requestIdleCallback]]
- [107] [CODE(HTML)@en[<[[meta]] [[http-equiv]]=[[Refresh]]>]] [SRC[HTML]]
- [108] [CODE(HTTP)@en[[[Refresh:]]]] [[ヘッダー]] [SRC[仕様なし]]
- [98] [[resource fetch algorithm]] [SRC[HTML]]
-- [CODE(DOMe)@en[[[progress]]]] [[イベント]]の[[発火]]は 350ms (±200ms) ごと、または1[[バイト]]受信のいずれか遅い方で行わなければ[['''なりません''']]
- [99] [[stall timeout]] [SRC[HTML]]
-- [RUBYB[利用者エージェント定義の時間]@en[user-agent defined length of time]] (3秒くらいとする[['''べき''']]) で発生
- [100] [[DnD]] 処理 [SRC[HTML]]
-- 350ms (±200ms) ごとに行わなければ[['''なりません''']]
- [104] [[make progress notifications]], [[make upload progress notifications]] [SRC[[[XHR]]]]
-- [CODE(DOMe)@en[[[progress]]]] [[イベント]]の[[発火]]は 50ms ごと、または1[[バイト]]受信のいずれか遅い方で行わなければ[['''なりません''']]
- [189] [[allowed to show a popup]] の判定は[[利用者エージェント]]定義の時間枠で判断されます
-- <http://www.whatwg.org/specs/web-apps/current-work/#allowed-to-show-a-popup>
- [[XHR]] の [CODE(DOMa)@en[[[timeout]]]] は、毎[[ミリ秒]]新たに[[キュー]]に追加される[[マイクロタスク]]でチェックする形で仕様化されています。
-- 実装上は、指定されたタイムアウトまで[[ミリ秒]]単位で待って[[マイクロタスク]]を[[キュー]]に入れる形にできそうです。
- [CODE(DOMm)@en[[[getCurrentPosition]]]], [CODE(DOMm)@en[[[watchPosition]]]]
- [[DeviceOrientation Event]] の[[発火]]の間隔
]FIG]

[214] [CODE(HTTP)@en[[[Retry-After:]]]] [[ヘッダー]]でも「待つ」時間の規定がありますが、
実装されていないと思われます。

[10] 各プロトコルにもタイムアウト時間があります。

;; [[HTTP接続の処理]]参照。

[15] 次の[[キャッシュ]]も、指定された時間の経過後、無効となります。
[FIG(list short)[
- [[DNSキャッシュ]]
- [[既知HSTSホスト]]
- [[既知PKPホスト]]
- [[代替サービス]]
- [[CORS]]
]FIG]

* 動画、音声、アニメーション

[9] [[レンダリングの更新]]参照。

* 関連

[2] 構文については[[Webの日時形式]]を参照。

[3] [[時間帯]]も参照。

[FIG(quote)[
[FIGCAPTION[
[14] [CITE[chrome.webNavigation - Google Chrome]]
( ([TIME[2016-06-20 16:13:47 +09:00]]))
<https://developer.chrome.com/extensions/webNavigation>
]FIGCAPTION]

> It's important to note that some technical oddities in the OS's handling of distinct Chrome processes can cause the clock to be skewed between the browser itself and extension processes. That means that WebNavigation's events' timeStamp property is only guaranteed to be internally consistent. Comparing one event to another event will give you the correct offset between them, but comparing them to the current time inside the extension (via (new Date()).getTime(), for instance) might give unexpected results.

]FIG]

* 歴史

[16] [CITE@en[removing 'monotonic clock' section]]
([[igrigorik]]著, [TIME[2016-10-25 02:31:07 +09:00]])
<https://github.com/w3c/user-timing/commit/bb98bce094395f61e92edca5d0cc1e09ab8d07df>



[20] [CITE[John Resig - Accuracy of JavaScript Time]]
([TIME[2017-04-09 17:25:08 +09:00]])
<http://ejohn.org/blog/accuracy-of-javascript-time/>