2012-03-29 7 views
5

1and1の共有ホスティングパッケージにはPHP 5.2.17しか含まれていないので、DateTimeオブジェクトは使用できません。とてもうるさい!PHP 5.2を使用して日付にX週を追加する

私は現在、このコード

$eventDate = new DateTime('2013-03-16'); // START DATE 
$finishDate = $eventDate->add(new DateInterval('P'.$profile["Weeks"].'W')); 

を持っていますが、明らかにそれは動作しません。

私はPHP5.2で動作するコードでどのように同じことができますか? (コードは、特定の日付に週のX番号を追加します。)

答えて

11

だけstrtotime()とタイムスタンプを取得し、週

$newTime = strtotime('2013-03-16') + ($numberOfWeeks * 60 * 60 * 24 * 7); // 604800 seconds 

または私はちょうど見つけたのx *秒追加:

$newTime = strtotime('+'.$numberOfWeeks.' weeks', strtotime('2013-03-16')); 

別の方法としては、DateTimeクラスを利用することができます。 (strtotimeでのように)あなたの日付を変更する方法modifyを使用します。

$d = new DateTime('2013-03-16'); 
$d->modify('+'.$numberOfWeeks.' weeks'); 
+1

'strtotime()'はそれ以上の問題をもたらします。ピリオドを計算するときに奇妙なバグを避けるために 'DateTime'クラス関数を使用してください。 –

+0

@Paul PHP 5.2で 'DateInterval'が見つからなかったことに気付いていますか?もちろん、常に他の答えがあります。 –

+0

そして、_PHP 5.2.0_の[DateTime :: modify() '](http://www.php.net/manual/en/datetime.modify.php)はどうでしょうか?また、正と負の値で動作します。ちょうど数日前、私は自分の製品でバグを修正しました。私はタイムスタンプの差によって間隔を計算していましたが、2週間(10月〜11月)のマージンには2週間の猶予がありました。 'DateTime'実装に修正されました。 –

3

あなたはPHP 5.2でDateTimeオブジェクトを使用することができ、それだけでは、PHP 5.3で追加されましたメソッドを追加します。 PHP 5.2ではthe modify methodを使用できます。

$finishDate = $eventDate->modify('+'.$profile["Weeks"].' weeks'); 

操作を実行するオブジェクトが変更されることに注意してください。したがって、$ eventDateも変更されます。

関連する問題