날짜 빼기 1 년?


91

이 형식의 날짜가 있습니다.

2009-01-01

같은 날짜를 1 년 전에 반환하려면 어떻게해야합니까?


3
"1 년"wrt 윤년이 의미하는 의미의 문제에 관심을 기울이는 것을 잊지 마십시오. 2008-02-28에서 365 일을 빼면 2007-02-28이되고 2008-02-29에서 365 일을 빼면 2007-03-31이됩니다.
HostileFork은 그나마 신뢰 SE 말한다

나는 그것이 "1 년 빼기"가 무엇을 의미하는지에 크게 달려 있다고 생각한다. 당신은 같은 달과 날짜를 의미 할 수 있지만, 적대적이 지적한 것처럼 1 년 전 또는 365 일을 뺀 다음 달과 날을 의미 할 수 있습니다.
D.Shawley 2010 년

답변:


131

다음을 사용할 수 있습니다 strtotime.

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

strtotime함수는 사용할 수있는 형식화 된 문자열을 얻기 위해 유닉스 타임 스탬프를 반환합니다 date.

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

101

strtotime () 함수 사용 :

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

52

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

32

내가 잘 사용하고 일했던 가장 쉬운 방법

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

그 후에 두 날짜 만 비교하십시오.

누군가를 도울 수 있기를 바랍니다.


3

이 질문에 대한 답변으로 받아 들일 수있는 답변이 많지만 객체를 sub사용하는 방법의 예는 보이지 않습니다 \Datetime. https://www.php.net/manual/en/datetime.sub.php

따라서 참조를 위해를 사용 \DateInterval하여 \Datetime객체 를 수정할 수도 있습니다 .

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

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

다음을 반환합니다.

2008-01-01

에 대한 자세한 내용은 https://www.php.net/manual/en/class.dateinterval.php\DateInterval 문서를 참조하십시오.


-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.