2013年1月12日土曜日

日付処理でうっかり

日付処理でうっかりしてしまったこと。

「指定した日の○○ヶ月前の月始めの日」

を取得したい。こんなかんじに翻訳してみました。
PHP DateTimeクラスは便利ですね。
$foo = (指定した日)
$bar = (○○ヶ月前)
$dt = new DateTime($foo);
// 指定した日の$barヶ月前
$dt->modify(-($bar) - 1) . 'month');  ……(a)
// その月の月始の日
$dt->modify('first day of this month');  ……(b)
$dst = $dt->format('Y-m-d');

すると、
$foo に 1/31 などを指定したときは思ったように動作しないことがあります。

(a)の前に一旦(b)をはさんでおくとOKですね。

マニュアルにもありました。
http://php.net/manual/ja/datetime.modify.php


月始の日は常に”1”というのはさておき・・・(^^;

0 件のコメント:

コメントを投稿