2011-01-18 15 views
2

コードがあります:date('Y')."-".date('m')."-".date('d')コードの一部の日付から数年を取り除くにはどうすればいいですか?日付から数年を引く

あなたがPHPの暗黙の型キャストを利用して簡単に

(date('Y')-42)."-".date('m')."-".date('d') 

または短い

(date('Y')-42)."-".date('m-d') 

を使用することができますあなたの状況については

+0

*年数を削除*減算について話していますか? – SilentGhost

答えて

5

しかし、アルバロ・G.ヴィカリオコメントで観察されるように、そこにあります何年も存在しない2月29日の恐怖ですので、にしてくださいstrtotime

例:

$someDay = strtotime('2009-11-23'); 
$threeYearsBefore = strtotime('-3 years', $someDay); 
echo date('Y-m-d', $threeYearsBefore); 

または、現在の時刻と比較し、

$threeYearsBefore = strtotime('-3 years'); 
echo date('Y-m-d', $threeYearsBefore); 
+0

'date'は文字列を返します。 – SilentGhost

+0

ありがとう、それは働いた! – DogPooOnYourShoe

+1

@SilentGhost - そうですが、PHPは弱く型付けされています。 – Spudley

9
$date = strtotime('-2 years'); 

そして、あなたの印刷コードは、この複雑なバージョン以外の何ものでもないので:

echo date('Y-m-d', $date); 

。あなたは1ライナーにすべてを簡素化することができます:

echo date('Y-m-d', strtotime('-2 years')); 
+4

なぜ 'date( 'Y-m-d')'? – SilentGhost

+0

@SilentGhost - もちろんそうです。私はちょうど最小限の変更で元のコードを取った。 –

4

あなたが同様に達成するためにDateIntervalとともにDateTimeクラスを使用することができますPHP5.2のとおり:

$now = new DateTime(); 
$two_years_ago = $now->sub(new DateInterval("P2Y")); 
echo $two_years_ago->format('Y-m-d'); 
+0

これはきれいな解決策であるようです。 – cptnk

0

エコー日付( "Y-M-D"、のstrtotime( ' - 20年));

関連する問題