2017-08-03 18 views
-1

私は今月の最初と最後の日をPHPでキャプチャしています。 12ヶ月前と11ヶ月前にその月の最初と最後の日を得ることができるように、それをさらに進めて12ヶ月を減算したいと思います。私の問題は、構文が今月から変更されないということです。以下のすべての結果は、08/01/2017および08/31/2017に表示されます。PHPで12ヶ月前に取得

正確な結果が得られるように、これをどのように変更する必要がありますか?

$firstdayofmonth = date('Y-m-01'); 
$lastdayofmonth = date('Y-m-t'); 

$firstdayofmonth = date('m-d-Y', strtotime($firstdayofmonth)); 
$lastdayofmonth = date('m-d-Y', strtotime($lastdayofmonth)); 

$month12start = date($firstdayofmonth, strtotime("-12 months")); 
$month12end = date($lastdayofmonth, strtotime("-12 months")); 
$month11start = date($firstdayofmonth, strtotime("-11 months")); 
$month11end = date($lastdayofmonth, strtotime("-11 months")); 

echo $month12start; 
echo $month12end; 
echo $month11start; 
echo $month11end; 
+0

あなたは新しい '日付()'コールのフォーマットパラメータに '日付()'から文字列だ変数を渡します - それはあまり意味がありません。 – Qirel

+0

'$ month12start = date('08 -01-2017 '、strtotime(" - 12 months "))'日付書式の文字がないと、変更はありません。 –

+0

@Qirel - 私はそれを設定することをお勧めしますか? – BellHopByDayAmetuerCoderByNigh

答えて

2

strtotime()はPHPで最も信頼性の高い日付方式ではなく、いくつかの奇妙な振る舞いを持つことができ、ここを参照してください - Removing exactly one month from a dateを。

あなたがそうのようなDateTime()を使用するために私が代わりにお勧めします:

$date = new DateTime(); //Today 
$lastDay = $date->format("Y-m-t"); //Get last day 
$dateMinus12 = $date->modify("-12 months"); // Last day 12 months ago 
+0

echo $ dateMinus12; http://www.writephponline.com/の構文とテストの終わりまで何もないecho – BellHopByDayAmetuerCoderByNigh

+0

'echo $ dateMinus12-> format( 'Ym-d');' – DrRoach

+0

これはなぜ2 y $ dateに戻るのですか? =新しいDateTime(); //今日 $ dateMinus12 = $ date-> modify( " - 12 months"); //最終日12か月前 $ dateMinus12end = $ date-> modify( "-12 months"); echo $ dateMinus12-> format( 'Y-m-01'); echo $ dateMinus12end-> format( 'Y-m-t');耳とプレゼント2015-08-01と2015--8-31 ???? – BellHopByDayAmetuerCoderByNigh

関連する問題