[1] [[HTTP]] では[DFN[[RUBYB[デルタ秒]@en[delta-seconds]]]]として[[現在時刻]]からの[[秒]]数によって[[時刻][相対時刻]]を指定することができます。
[[デルタ秒]]は[[正]]の[[整数]]です。

* 仕様書

[REFS[
- [3] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-08-07 05:54:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-7.1.3>
- [5] [CITE@en[RFC 7234 - Hypertext Transfer Protocol (HTTP/1.1): Caching]] ([TIME[2014-09-11 10:19:59 +09:00]] 版) <https://tools.ietf.org/html/rfc7234#section-1.2.1>
]REFS]

* 構文

[2] 1文字以上の [CODE(ABNF)@en[[[DIGIT]]]] の列によって[[十進数]] [SRC[>>3]]
の[[秒]]数 [SRC[>>3, >>5]] を表します。

[FIG(railroad)[
= +
== [[ASCII数字]]
]FIG]

[6] [[先導0]]も認められています。

[4] [[RFC 7231]] ではこれを [DFN[[CODE(ABNF)@en[[[delay-seconds]]]]]] と呼んでいます [SRC[>>3]]。

[7] [[RFC 7234]] ではこれを [DFN[[CODE(ABNF)@en[[[delta-seconds]]]]]] と呼んでいます
[SRC[>>5]]。

* 処理

[8] [CODE(ABNF)@en[[[delta-seconds]]]] を構文解析して[[二進数]]に変換する[[受信者]]は、
少なくても31ビットの非負整数を扱える[[算術型]]を使う[RUBYB[べき]@en[ought to]]です。 [SRC[>>5]]

[9] [[キャッシュ]]が扱える値よりも大きな [CODE(ABNF)@en[[[delta-seconds]]]]
を[[受信]]した時や、以後の計算が[[桁溢れ]]してしまう時は、
[N[2147483648]] (= 2[SUP[31]]) または[[正整数]]の最大値とみなさなければ[MUST[なりません]]
[SRC[>>5]]。

[19] [[サーバー]]や[[クライアント]]では普通[[閏秒のないUTC]]が使われるので、
[[デルタ秒]]の計算にも[[閏秒]]は考慮されないこととなります。

* 文脈

[11] [[デルタ秒]]は次の場面で使われています。

[FIG(list middle)[
- [CODE(HTTP)@en[[[Retry-After:]]]]
- [CODE(HTTP)@en[[[Age:]]]]
- [CODE(HTTP)@en[[[Keep-Alive:]] [[timeout]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[max-age]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[s-maxage]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[max-stale]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[min-fresh]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[stale-if-error]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[stale-while-revalidate]]]]
- [CODE(HTTP)@en[[[Cache-Control:]] [[retain]]]]
- [CODE(HTTP)@en[Prefer: wait]]
- [CODE(HTTP)@en[[[Access-Control-Max-Age:]]]]
- [CODE(HTTP)@en[[[Strict-Transport-Policy:]] [[max-age]]]]
- [CODE(HTTP)@en[[[Pubic-Key-Pins:]] [[max-age]]]]
- [CODE(HTTP)@en[Alt-Svc:]] [CODE(HTTP)@en[ma=""]]
]FIG]

;; [16] [[時計][時計 (Web)]]も参照。

[21] [[RTSP]] でも使われます。

* 関連

[10] [CODE(HTTP)@en[[[Set-Cookie:]]]] [[ヘッダー]]の [CODE(HTTP)@en[[[Max-Age]]]]
の値も意味的には同じですが、構文的には微妙に違っています。

[13] [CODE(HTTP)@en[[[Timeout:]]]] [[ヘッダー]]の値も[[秒]]数ですが、
構文が異なります。

[12] [CODE(HTTP)@en[[[Meter:]] [[timeout]]]] [[指令]]は[[分]]数を表しています。

[14] [CODE(URI)@en[[[expires_in]]]] [[引数]]の値も同じものを定義しています。

[20] [CODE[TTL:]] [[ヘッダー値]]もほとんど同じものを定義しています。

[15] [[HOBA]] の [CODE(HTTP)@en[[[max-age]]]] [[引数]]の値も同じとみられるものを定義しています。

[17] [SEE[ 秒以外の単位のものは[[Webの日時形式]] ]]

[18] [SEE[ Web 以外で使われるものは[[相対時刻]] ]]

* メモ