[PHP-users 31361] Re: strtotime()関数での日付加算

Arikata Koichi arikatakou @ aricart.net
2007年 2月 1日 (木) 23:28:26 JST


Hamuuです。

五十嵐さん、ご回答ありがとうございます。

結局strtotime()関すの日付加算は、単純に指定された秒数を加算する
だけのようですね。
月の日数を末日としてmktime()のパラメータに渡せば、末日は算出
できるわけですね。ちょっと目から鱗。

発送をかえてアプローチしてみます。
ありがとうございました。



  > -----Original Message-----
  > From: php-users-bounces @ php.gr.jp
  > [mailto:php-users-bounces @ php.gr.jp] On Behalf Of フェアウェイズ・テクノ
ロジー 五十嵐
  > Sent: Thursday, February 01, 2007 11:14 PM
  > To: PHP-users ML
  > Subject: [PHP-users 31359] Re: strtotime()関数での日付加算
  >
  > 五十嵐と申します。
  >
  > > mktime()関すに渡す引数をひとつずつみると、
  > > $base_timestampを"2007-01-31"のタイムスタンプのとき、
  > > date("m",strtotime("+3 month",$base_timestamp) の値が「5」に
  > > なってしまっています。(期待値は「4」)
  > > mktime()での末日の求め方は、PHPのマニュアルを参考にしました。
  > > これは1/31に限っておこるものなのか、算出方法に問題があるのか、
  > > よくわかりません。
  >
  > 4/31は存在しないので次の日である5/1と解釈してしまうようです。
  > 今回求めようとしている内容であれば、当月1日から求めれば上記の症状に当ら
  > ないと思いますので、以下でどうでしょうか?
  >
  > <?
  > $base_timestamp    = strtotime(date("Y-m-01 H:i:s",time()));//当月1日
  > $request_timestamp = mktime( 0,0,0
  > 	, (integer)date("m",strtotime("+2 month",$base_timestamp))
  > 	, (integer)date("t",strtotime("+2 month",$base_timestamp))
  > 	, (integer)date("Y",strtotime("+2
  > month",$base_timestamp))	);
  > echo date("Y-m-d",$request_timestamp);//2ヵ月後末日
  > ?>
  >
  >
  > _______________________________________________
  > PHP-users mailing list  PHP-users @ php.gr.jp
  > http://ml.php.gr.jp/mailman/listinfo/php-users
  > PHP初心者のためのページ - 質問する前にはこちらをお読みください
  > http://www.php.gr.jp/php/novice.php3
  >



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