日付マイナス1年?


91

私はこの形式で日付を持っています:

2009-01-01

同じ日付で1年前の日付を返すにはどうすればよいですか?


3
うるう年に対して「1年」という意味の意味論的な問題に傾向があることを忘れないでください。2008-02-28から365日を引くと2007-02-28が得られ、2008-02-29から365日を引くと2007-03-31が得られます。
HostileForkがdont信託SE言う

「1年差し引く」の意味にもかなり依存すると思います。Hostileが指摘するように、同じ月と日を意味しますが、1年前または365日を差し引いた後の月と日を意味します。
D.Shawley、2010年

回答:


130

使用できますstrtotime

$date = strtotime('2010-01-01 -1 year');

strtotime機能は、使用可能なフォーマットされた文字列を取得するには、UNIXタイムスタンプを返しますdate

echo date('Y-m-d', $date); // echoes '2009-01-01'

99

strtotime()関数を使用します。

  $time = strtotime("-1 year", time());
  $date = date("Y-m-d", $time);

51

DateTimeオブジェクトを使用しています...

$time = new DateTime('2099-01-01');
$newtime = $time->modify('-1 year')->format('Y-m-d');

または今日のために今を使用して

$time = new DateTime('now');
$newtime = $time->modify('-1 year')->format('Y-m-d');

31

私が使用してうまくいった最も簡単な方法

date('Y-m-d', strtotime('-1 year'));

これは完璧に機能しました。これが他の誰かにも役立つことを願っています。


9
// set your date here
$mydate = "2009-01-01";

/* strtotime accepts two parameters.
The first parameter tells what it should compute.
The second parameter defines what source date it should use. */
$lastyear = strtotime("-1 year", strtotime($mydate));

// format and display the computed date
echo date("Y-m-d", $lastyear);

6

私のウェブサイトでは、登録が18歳どうかを確認するために、次のように使用しました。

$legalAge = date('Y-m-d', strtotime('-18 year'));

その後、2つの日付のみを比較します。

それが誰かを助けることを願っています。


2

この質問への回答として受け入れられる答えはたくさんありますがsub\Datetimeオブジェクトを使用するメソッドの例は見当たりません:https : //www.php.net/manual/en/datetime.sub.php

したがって、参照の\DateIntervalために、\Datetimeオブジェクトを変更するためにa を使用することもできます。

$date = new \DateTime('2009-01-01');
$date->sub(new \DateInterval('P1Y'));

echo $date->format('Y-m-d');

どちらが戻ります:

2008-01-01

の詳細について\DateIntervalは、ドキュメントを参照してくださいhttps : //www.php.net/manual/en/class.dateinterval.php


-3

次の関数を使用して、日付から1年または任意の年を減算できます。

 function yearstodate($years) {

        $now = date("Y-m-d");
        $now = explode('-', $now);
        $year = $now[0];
        $month   = $now[1];
        $day  = $now[2];
        $converted_year = $year - $years;
        echo $now = $converted_year."-".$month."-".$day;

    }

$number_to_subtract = "1";
echo yearstodate($number_to_subtract);

上記の例を見ると、次も使用できます

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