ISO Week Notaiton in PHP, or double standard of PHP
- Date
- 2007-03-06 (Tue)
- Category
- php
ISO Week Notation to Epoch time
ISO 8601:2004 で定義されている 週 を単位にした表記法を Epoch に変換する関数を作りました。Wikipedia の項目を参照して作りました。もし間違いがあれば指摘してください。
もし 2007-W10-2T08:51Z という風にすると、2007年の 第10週目 の 2日目(火曜日)の8時51分、ということになります。
これを制作するにあたって、PHP のトリビアを一つ。
PHP の2重舌外交政策
- まず大前提として、ISO 8601:2004 では、週連番として、1 〜 7 を 月曜日〜日曜日に割り当てています。(ISO による要約)
- それに習ったのかどうかは知りませんが、 C 言語でも、週連番として、1 〜 7 を 月曜日〜日曜日に割り当てています (PDF: C99 の仕様書) 。
- strftime という文字列を解析して Epoch を返す関数では、 Solaris を名指しして、ISO 準拠でないシステムへの批判ともとれる警告文を掲載しています。
- しかし
- idate 関数、あるいは date 関数を見てみると解りますが、PHP の内部では 日曜〜土曜を、0〜6とする実装になっています。さてどうしたものか。
- タイトルは煽りです。
なおこの関数を制作するにあたり、tzzz: ISO 8601 week number to date (timestamp) in PHP が大変参考になりました。というよりロジックはほとんど拝借しています。ありがとうございます。
Comment:0
Trackback:0
- TrackBack URL for this entry
- http://blogs.grf-design.com/mt/mt-tb.cgi/200
- Listed below are links to weblogs that reference
- ISO Week Notaiton in PHP, or double standard of PHP from The Croton