毎回毎回日時を出力する時にどうすればいいのか思い出せなくて毎回毎回調べていてばかみたいなのできちんとまとめてみます。
2008-08-06 19:38:56 はISO8601です。
ISO8601は日時を表すだけでなく、年だけや時刻だけを表せるほか、期間を表すことができます。また、多様な書き方を許していて、間にある記号を省略して20080806 193856というのもISO8601として正しい日時になります。英語のwikipediaのISO 8601が詳しいです。
2003-12-13T18:30:02Z みたいなやつです。
この書式は実はISO8601に含まれているのですが(なのでISO8601がパースできるパーサならW3CDTFもパースできます)、仕様を決める時に日付の書式をISO8601にすると、ISO8601が多様な書式を許していることで実装が煩雑になってしまいます。それを避けるために導入されたものだそうです。
Mon, 23 Apr 2007 11:10:53 +0900 という形式のものです。個人的には、曜日はいらないだろ、と毎回思っています。メールやHTTPのヘッダ、RSS2.0の日時表記に使われています。
asctimeというCの関数が出力するフォーマットです。こんな Thu Feb 3 17:03:55 GMT 1994 かんじでRFC2822/822と似ていますが、月の名前が月の日付よりも先にきているものです。
ブラウザ上で何かする時にはjavascriptのDateオブジェクトのtoString()の結果くらいでしかお目にかかることはありませんが、ブラウザ以外のC言語で実装されているソフトウェアではよく使われています。身近なところではapacheのエラーログの日付表記がctimeになっています。
| ISO8601 (2008-08-08 01:11:05) |
W3CDTF | RFC2822 | ctime | |
|---|---|---|---|---|
| perl | $_ = DateTime |
DateTime::Format::W3CDTF |
||
| PHP | preg_replace('/T|[\+Z].+/', ' ', date('c')) | date('c') | date('r') | |
| javascript | ISO8601DateUtils.jsm(extensionのみ) |
ISO8601DateUtils.jsm(extensionのみ) |
(new Date).toString() |
テーブルはGenerate HTML Tables Clean and Fastでつくりました。地味ですが、タブで隣のセルに移動できたり、地味に便利でした。
トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。
http://labs.gmo.jp/mt/mt-tb.cgi/227
comments