2011-02-03 11 views
3

私はDateTimeオブジェクトを持っていますので、翌月のXに移動する必要があります。例えば、X場合15:月の日付を変更するDateTime :: modify()の式

2011-02-03 ⇒ 2011-02-15#以前の15よりも、今月

2011-02-15 ⇒ 2011-02-15に滞在します#今日の15は、今日

2011-02-20 ⇒ 2011-03-15#その後15より上の滞在来月に移動

私はDateTime::format()DateTime::setDate()の組み合わせを使用することができます知っているが、それはDateTime::modify()への単一の呼び出しでそれさせることができますか?

PHP/5.2.14の下でも動作する必要があります。

"日15"を含む式は解析さえしません。

+0

トリッキーです。私は[相対日付形式](http://de3.php.net/manual/en/datetime.formats.relative.php)だけでこれを行うことができるとは思えません。条件付きでそれを解決する方法を知っているときに、あまりにも多くの時間を費やす価値はありません。 – Gordon

答えて

10
$X = 15; 
$d = $date->format('d'); 
$m = $date->format('m'); 
$Y = $date->format('Y'); 

$date->setDate($Y , $m , $X); // set the wanted day for the month 

if($d>$X){ //if the wanted day was after the current day, it means that it next month's one. 
    $date->modify($date, '+1 month'); 
} 
+2

ええ、ゴードンが言及したように、条件付きで簡単です – Cedric

+0

私の必要性を解決しますが(+1)、実際に私の質問に答えることはできません。これはもっと多くの行です* 10行のスパゲッティコードを堅牢な1つのライナー»*(スパゲッティで私はあなたのコードではなく自分のコードを意味する)。私は相対的な日付形式で自分のスキルを向上させようとしており、この正確なケースが達成可能かどうかはわかりませんでした。 –

+1

私の知識はありません。あなたの必要性に近いものをPHPドキュメントで探します。私はあなたがすでに見たと思う。そこに何もないなら、他には何もありません。 – Cedric

関連する問題