2012-12-20 10 views
7

私は現在の日付から6ヶ月を取得しようとしています。私が使用して試したPHPで6ヶ月追加

date('d', strtotime('+6 month', time()));

しかし、動作するようには思えないが、常に01返します。これを行うより良い方法はありますか?

ありがとうございました!

+0

をチェック) 'は、2番目のパラメータを省略すると、デフォルトで現在の時刻を使用します。また、 'strtotime()'は絶対時間ではないので、月を計算するとは考えていません。日数は月ごとに異なります。 –

答えて

18

私はDateTime使用する方がはるかに簡単で作業を見つける:

$datetime = new DateTime(); 
$datetime->modify('+6 months'); 
echo $datetime->format('d'); 

または

$datetime = new DateTime(); 
$datetime->add(new DateInterval('P6M')); 
echo $datetime->format('d'); 

やPHPのバージョンで5.4+

echo (new DateTime())->add(new DateInterval('P6M'))->format('d'); 
+0

完璧に動作します、ありがとう! – dzm

2

あなたがまだのstrtotimeを使用したい場合やDateTime()オブジェクトとは対照的に、date関数は、次のように動作します。

date('d', strtotime('+6 months')); 
0

あなたはそれがデフォルトであるとして、のstrtotimeにtime()を渡す必要はありません。

それとは別に、あなたのアプローチは正しいです - あなたは月のdate('m')(日出しされている)とないdate('d')を取るので、echo date('m', strtotime('+6 month'));がすべきことを除いて。

しかし、私はDateTime方法を使用することをお勧めします。 DateTimeには、 "古い"日付関数に比べていくつかの利点があります。たとえば、UNIXビッグバンが32ビット整数に収まりきらない時から秒が経過すると動作しなくなります。

1

あなたはDateIntervalクラスと一緒にDateTimeクラスを使用することができます。

<?php 
$date = new DateTime(); 
$date->add(new DateInterval('P6M')); 

echo $date->format('d M Y'); 
0

あなたはsimpleDateクラスを使用することができます。

include('../code/simpleDate.php'); 
$date = new simpleDate(); 
echo $date->now()->addMonth(6)->get(); 

は( `、余談としてのstrtotimeをtutorials here.

関連する問題