Date.toString()の実装依存を調査
Date.toString()が何を返すか調べてみました。
If-Modified-Since ヘッダの値に、toString()をそのまま渡せちゃったりしないかな? を調べるのが目的です。
3種類の日付フォーマット
8年ほど前に、Webサーバやらメールサーバを仕事で実装しまくっていたときにRFCを読みあさってたんですが、今一度調べてみました。
HTTP1.1のRFCによると、三種類の日付フォーマットを受けとめてくれます。
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Date.toString()
次に、各ブラウザ上で動作するJavaScriptが何を返すか調べてみました。
ブラウザ | (new Date(0)).toString() | |
---|---|---|
Firefox2 | Thu Jan 01 1970 09:00:00 GMT+0900 | asctime() |
Firefox3 | Thu Jan 01 1970 09:00:00 GMT+0900 | asctime() |
IE6 | Thu Jan 1 09:00:00 UTC+0900 1970 | 独自路線 |
IE8 | Thu Jan 1 09:00:00 UTC+0900 1970 | 独自路線 |
Safari3.1 | Thu Jan 01 1970 09:00:00 GMT+0900 (モフビ (ユWマタボ)) | |
Opera9.25 | Thu, 01 Jan 1970 09:00:00 GMT+0900 | RFC1123準拠 |
Opera9.5β2 | Thu, 01 Jan 1970 09:00:00 GMT+0900 | RFC1123準拠 |
Safariの深淵に触れる余裕は無いのでこの場はスルーしますが、3が付くとアホになるのは、流行ってるみたいだから仕方ないのかね。
Date.toUTCString()
次に、toUTCString()を試してみます。
ブラウザ | (new Date(0)).toUTCString() | |
---|---|---|
Firefox2 | Thu, 01 Jan 1970 00:00:00 GMT | RFC1123準拠 |
Firefox3 | Thu, 01 Jan 1970 00:00:00 GMT | RFC1123準拠 |
IE6 | Thu, 1 Jan 1970 00:00:00 UTC | 独自路線 |
IE8 | Thu, 1 Jan 1970 00:00:00 UTC | 独自路線 |
Safari3.1 | Thu, 01 Jan 1970 00:00:00 GMT | RFC1123準拠 |
Opera9.25 | Thu, 01 Jan 1970 00:00:00 GMT | RFC1123準拠 |
Opera9.5β2 | Thu, 01 Jan 1970 00:00:00 GMT | RFC1123準拠 |
うん、toUTCString() がいい感じです。