web-dev-qa-db-ja.com

PHPの日付に3か月を追加します

日付を含む$effectiveDateという変数2012-03-26があります。

この日付に3か月を追加しようとしていますが、失敗しました。

ここに私が試したものがあります:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));

そして

$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");

私は何を間違えていますか?どちらのコードも機能しませんでした。

69
user979331

これに変更すると、予想される形式が得られます。

$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));
160
Tchoupi

「うまくいかなかった」とは、フォーマットされた日付の代わりにタイムスタンプを提供していることを意味すると思います。

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp
echo date('Y-m-d',$effectiveDate); // formatted version
5
Nick

この答えは、まさにこの質問に対するものではありません。ただし、この質問は、日付から期間を追加/差し引く方法を引き続き検索できるため、これを追加します。

$date = new DateTime('now');
$date->modify('+3 month'); // or you can use '-90 day' for deduct
$date = $date->format('Y-m-d h:i:s');
echo $date;
4
Sadee

Tchoupi's 次のようにstrtotime()の引数を連結することにより、回答を少し冗長にすることができます。

$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months") );

(これは魔法の実装の詳細に依存しますが、当然のように不信である場合はいつでも詳細を見ることができます。)

3
gleech

日付を読み取り可能な値に変換する必要があります。 strftime()またはdate()を使用できます。

これを試して:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
$effectiveDate = strftime ( '%Y-%m-%d' , $effectiveDate );
echo $effectiveDate;

これは動作するはずです。あなたが試してみたいかもしれないローカライズに使用できるので、私はstrftimeを使うのが好きです。

2
JohnnyQ

N番目の日、月、年を追加

$n = 2;
for ($i = 0; $i <= $n; $i++){
    $d = strtotime("$i days");
    $x = strtotime("$i month");
    $y = strtotime("$i year");
    echo "Dates : ".$dates = date('d M Y', "+$d days");
    echo "<br>";
    echo "Months : ".$months = date('M Y', "+$x months");
    echo '<br>';
    echo "Years : ".$years = date('Y', "+$y years");
    echo '<br>';
}
2
Rahul Gandhi

以下が動作するはずです、これを試してください:

$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d")));
echo $time = date("y/m/d", $effectiveDate);
1
Dipak kukadiya

PHP Simple LibrariesのsimpleDateクラスを使用できます。

include('../code/simpleDate.php');
$date = new simpleDate();
echo $date->set($effectiveDate)->addMonth(3)->get();

ライブラリチュートリアルはこちら を確認してください。

0
isa

以下は動作するはずです

$d = strtotime("+1 months",strtotime("2015-05-25"));
echo   date("Y-m-d",$d); // This will print **2015-06-25** 
0
Ricky

以下は機能するはずですが、フォーマットを変更する必要がある場合があります。

echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));
0
Brendon Dugan