* C

[REFS[
- [7] [CITE[ctime(3) - Linux manual page]] ([TIME[2019-04-08 00:17:49 +09:00]]) <http://man7.org/linux/man-pages/man3/ctime.3.html>
-- [8] [CITE[Man page of CTIME]] ([TIME[2019-04-14 12:33:28 +09:00]]) <https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ctime.3.html>
]REFS]

* HTTP

[3] [[ANSI C]] の [CODE(C)[[[asctime]]()]] の形式です。 
[[HTTPの日付形式]]にも含まれています。
[[RFC 1945]] によると次のように定義されます。

[PRE[
  asctime-date   = wkday SP date3 SP time SP 4DIGIT
  date3          = month SP ( 2DIGIT | ( SP 1DIGIT ))
                          ; month day (e.g., Jun  2)
  time           = 2DIGIT ":" 2DIGIT ":" 2DIGIT
                          ; 00:00:00 - 23:59:59
  wkday          = "Mon" | "Tue" | "Wed"
                 | "Thu" | "Fri" | "Sat" | "Sun"
  month          = "Jan" | "Feb" | "Mar" | "Apr"
                 | "May" | "Jun" | "Jul" | "Aug"
                 | "Sep" | "Oct" | "Nov" | "Dec"
]PRE]

固定長で、[[日]]が1桁の時は間隔 ([CODE(ABNF)[[[SP]]]]) 
を補充します。 (時分秒が1桁の時は0埋めします。)

** 時間帯

[1] この[[日付形式]]には[[時間帯]]の欄がありません。 [[HTTP]]
で使われる場合は定義により必ず [CODE(HTTP)[[[GMT]]]] ([CODE[+0000]])
ですが、それ以外で使われる場合は一般に出力した機械の[[地方時]]でしょう。

[2] 主に >>1 の理由から、この形式を情報交換用に使用するのはふさわしくないでしょう。

** 実装

[15] [[Perlモジュール]] [CODE(perl)[[[HTTP::Date]]]] には、 [[asctime]] 形式の時刻を、動作中の計算機の[[現地時間]]で表されるものとして処理する不具合あるいは仕様があります。

* mbox

[9] [[mbox]]

[REFS[
- [10] [CITE@en[rfc4155]], [TIME[2021-07-14T04:14:24.000Z]] <https://datatracker.ietf.org/doc/html/rfc4155#appendix-A>
]REFS]

>           a timestamp indicating the UTC date and time when the message
was originally received, conformant with the syntax of the
traditional UNIX 'ctime' output sans timezone (note that the
use of UTC precludes the need for a timezone indicator);


* 例

- [5] [SAMP[Sun Nov  6 08:49:37 1994]]
- [6] [SAMP[Mon Dec  2 18:28:12 2002]]

* メモ

[3] [WEAK[2002-12-19 (木) 20:59]] ''1970年1月1日'': [[ABNF]] では 
[CODE(ABNF)[<">[VAR[...]]<">]] になっているので大文字・小文字を区別しないとしていますが、
生成側は書かれている通り [WEAK[(1文字目だけ大文字)]]
にしないと、解釈できない糞実装があるかもしれません。

[4] [[Perl]] では、 [CODE(perl)[[[gmtime]]]] や [CODE(perl)[[[localtime]]]] の [CODE(perl)[[[scalar]]]] 
文脈での値がこの形式になります。

[5] 新しい HTTP [[メッセージ]]を出力する時には、 
[CODE(C)[asctime]] 形式ではなく [[RFC 1123の日付形式]]の 
HTTP 版を使うことになっています。

[6] [[Apache]] は[[CGIスクリプト]]の出力が [CODE(C)[asctime]] 
のとき、 [CODE(HTTP)[[[Last-Modified]]]] 
欄など幾つかの欄は勝手に修正してくれますが、 
[CODE(HTTP)[[[Expires]]]] などでは素通しします。
鯖の修正機能には頼らずにちゃんと最初から [[RFC 2822]] 
形式で出力しておくのがいいでしょう。
