[PHP-users 22347]Re: strtotimeについて

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2004年 6月 24日 (木) 01:27:57 JST


仲村です


On Wed, 23 Jun 2004 12:46:15 +0900,
 Youichi Iwakiri <yiwakiri @ st.rim.or.jp> wrote:

> GNUのマニュアルも曖昧ですし、PHPのドキュメントが指している
> Date Input Formatsが明確で無いというあたりが問題かなと。

 確かに。でもマニュアルに
==========
注意:  タイムスタンプの有効な範囲は、通常 Fri, 13 Dec 1901 20:45:54 GMT から
Tue, 19 Jan 2038 03:14:07 GMTまでです。(これらは、32ビット符号付整数の
最大及び最小に一致します。)
==========
と書かれてあり、「32ビット符号付き整数」とあるので
なんとなく time_t を使ってて 秒単位までしか扱えないって気がします(^^;
マニュアルの言う「通常」ってのが、どの程度通常なのか良く分からないんですが。
# PHP のポータビリティーを考えると、全て自前で実装って事に
# なるのかなぁ。あぁ大変...閏秒はどうするの?改暦は?etc...


 GNU tar のページが どのようなフォーマットを受け入れることができるかの
例示として挙げられていて、受け付けられる日付の制限がこの注意で
与えられていると理解すると、マニュアルには問題がないと思います。
# 例示したページでは小数以下の秒を扱ってるので、小数は扱えない旨
# きちんと書いた方が親切ではあると思います。
# OS で time_t が小数を扱えても多分エラーになるだろうし。


> 下記のバグレポートを見て、
> php-src/ext/standard/parsedate.y を修正して、
> 対処すると言うのが一番良いかもしれません。
>
> http://bugs.php.net/bug.php?id=17988
>
> 「PHP-4.3.xでも対応してくれよ」とコメントするのも忘れずに 
> されると、多くの人が幸せになれます。

 ほんとだ、PHP 4.3.4 では直すと書いてますね...
 文字列をパースするのは PHP だから PHP に責任が
あるということですね。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>
> grep time_t /usr/include/*/*.h | grep typedef
/usr/include/machine/_types.h:typedef   __int32_t       __time_t;               /* time()... */
/usr/include/sys/_timeval.h:typedef     __time_t        time_t;
...
> date -u -r 2147483647
Tue Jan 19 03:14:07 UTC 2038
> date -u -r 2147483648
Fri Dec 13 20:45:52 UTC 1901


PHP-users メーリングリストの案内