2011 年 8 月 8 日など、データベースに PHP の日付があります。この日付は strtotime() 形式になっているので、好きなように表示できます。
この日付を調整して、2013 年 8 月 8 日 (現在の年) にする必要があります。これを行う最善の方法は何ですか?これまで、私は頭を悩ませてきましたが、役に立ちませんでした。
これまでの回答のいくつかは、特定の日付を現在の年に更新するという点を見逃しており、受け入れられた回答を除いて、2011 年を 2013 年に変えることに集中していました。しかし、DateTime クラスを使用した例は、これらの場合に常に役立つと思います。
受け入れられた回答は通知になります:-
Notice: 不適切な形式の数値が検出されました......
指定された日付が閏年の 2 月 29 日の場合でも、正しい結果が得られるはずです。
以下は、任意の有効な日付を取り、現在の年の同じ日付を返す汎用関数です:-
/**
* @param String $dateString
* @return DateTime
*/
function updateDate($dateString){
$suppliedDate = new \DateTime($dateString);
$currentYear = (int)(new \DateTime())->format('Y');
return (new \DateTime())->setDate($currentYear, (int)$suppliedDate->format('m'), (int)$suppliedDate->format('d'));
}
例えば:-
var_dump(updateDate('8th August 2011'));
ここで動作することを確認し、DateTime クラスの詳細については PHP のマニュアルを参照してください。
更新された日付をどのように使用したいかは言いませんが、DateTime は柔軟であり、必要に応じてそれを処理できます。DateTime::format()
この方法が特に有用であることに注目してください。
strtotime( date( 'd M ', $originaleDate ) . date( 'Y' ) );
これは、元の時刻の日と月を取得し、現在の年を追加して、新しい日付に変換します。元のタイムスタンプに追加する秒数を追加することもできます。2 年間、これは 63 113 852 秒になります。
strtotime()の最初のパラメーターを使用して、2 年後の同じ日付のタイムスタンプを取得し、表示する形式に変換できます。
<?php
$date = "11/08/2011";
$time = strtotime($date);
$time_future = strtotime("+2 years", $time);
$future = date("d/m/Y", $time_future);
echo "NEW DATE : " . $future;
?>
たとえば、次のように出力できます。
date('2013-m-d', strtotime($myTime))
そのように...または使用します
$year = date('Y');
$myMonthDay = date('m-d', strtotime($myTime));
echo $year . '-' . $myMonthDay;
日付変更機能を使うこんな感じ
$date = new DateTime('2011-08-08'); $date->modify('+2 年'); echo $date->format('Ymd') . "\n"; //「2013-08-08」を与える