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


90

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

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

これが私が試したことです:

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

そして

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

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


6
「機能しなかった」とはどういう意味ですか?
ジョン

2
私は1340649000答えとして得ています、それは正しいようです。
Dogbert 2012年

本当によろしいです$effectiveDateあなたはそれが格納考えるもの店は?それは私のために働きます
Josh

その日付を2012-06-26に、2012-03-26に3か月追加することを期待しています
user979331

そしてdate('Y-m-d', 1340661600)2012-06-26どちらが正しいかを示します。
Tchoupi 2012年

回答:


193

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

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

月の変数に対処する方法は?$ monthsのように月数が含まれていますか?"+ '$months' months"動作しません
HKK 2014

4
$offset = 5; echo date('Y-m-d', strtotime("+$offset months", strtotime('2000-01-01'))); デモ
Cees Timmerman 2014

date()はローカリゼーションを使用しません。strftime()の方が優れています。
user706420 2014年

2
次のような日付では機能しません:date( '2018-01-31'、strtotime( '+ 3 month'))。日付が31で終わり、次の3か月がそうでない場合、正しい日付は返されません。
ダン

3
良くない解決策-正しい値を返さない-ダンHが述べたように
ジョセフヴァンキュラ

17

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

$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;

5

「機能しなかった」とは、正しく実行していたため、フォーマットされた日付ではなくタイムスタンプが表示されることを意味すると思います。

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

3

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

これを試して:

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

これはうまくいくはずです。strftimeはローカリゼーションに使用できるので、試してみたいと思うかもしれません。


3

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

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

(これは魔法の実装の詳細に依存していますが、正当に不信感がある場合はいつでもそれらを確認できます。)


2

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

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

1

以下はうまくいくはずです

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

1

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>';
}

0

以下は機能するはずですが、フォーマットを変更する必要があるかもしれません:

echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.