[PHP-users 12149] Re: 曜日を取得するには?

Kazumasa Gotoh php-users@php.gr.jp
Tue, 10 Dec 2002 18:57:26 +0900


From: kaga <kaga@procen.co.jp>
Date: Tue, 10 Dec 2002 18:38:11 +0900

> 下記のように曜日Noを取得して配列データ(曜日)を参照させて曜日を表示してい
> ますが2037年を過ぎると動きません。
> 実行範囲があるのでしょうか?

Unix 系 OS というか、標準 C ライブラリというか… には、2038年問題と
いうものが存在します。

これは時刻を 1970年 1月 1日 0時 0分 0秒からの経過秒数で示すという
仕様になっているからです。
この秒数を保持するのに 32bit signed integer を用いているため、
概ね 2038年 1月 19日あたりで桁あふれを起こします。

この事自身は広く知られている事実です。
PHP の関数もこれに依存した作りになっているのでしょう。

> また、下記の方法以外にも曜日を取得する方法はあるのでしょうか?

まぁ、自前で C 言語を用いてこのような問題を起こさない日付関数を
作成し、それを PHP に組み込むという方法はあります。

あとは、OS 側などで対策が行われ、PHP がそれに対応するまで待つと
いう方法もあるでしょう。

私はいまのところ、この問題に関しては後者の立場です。
2030年代には私はもうこの業界にいないだろうし。:-)
まぁ、2000年問題でも 1980年代半ばに「問題になるようなら、その時の
担当が考えればよい」と仲間と喋っていたのは内緒。

しかし、保険業などでは数十年後の日付も扱わないといけないので、
現時点かまたはごく近いうちに問題になるはずです。
おそらく何らかの手法を用いて解決しているのでしょうが、どうやって
いるのかは私は知りません。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
                             後藤和政    kgotoh@cic-kk.co.jp