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