PHP에서 $ Date에 일 추가


216

양식에 mySQL 쿼리의 일부로 날짜가 반환되었습니다. 2010-09-17

다음과 같이 변수 $ Date2를 $ Date5로 설정하고 싶습니다.

$Date2 = $Date + 1

$Date3 = $Date + 2

기타..

그래서 반환 2010-09-18, 2010-09-19등 ...

나는 시도했다

date('Y-m-d', strtotime($Date. ' + 1 day'))

그러나 이것은 나에게 날짜 이전을 제공합니다 $Date.

내 날짜를 'Ymd'형식으로 가져와 다른 쿼리에 사용할 수있는 올바른 방법은 무엇입니까?


답변:


447

다음 과 같이 사용하기 days만하면됩니다 day.

<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>

그리고 올바르게 출력됩니다.

2010-09-18
2010-09-19

7
그것은 또한 day잘 사용하여 정확하게 출력합니다 ...- date("Y-m-d", strtotime('2010-09-17 + 1 day'))> 2010-09-18, date("Y-m-d", strtotime('2010-09-17 + 2 day'))->2010-09-19
Daniel Vandersluis

이 방법으로 시도해 보았습니다. 처음 시작했을 때 하루 전에 왜 가치를 얻었는지 전혀 알지 못합니다.
Istari

며칠 동안 추가 할 변수가 있으면 어떻게합니까?
Carlos Martins

3
@Carlos echo date ( "Ymd", strtotime ($ Date. '+'. $ variable. 'days'));
Pradeep Kumar Prabaharan

아니,이 방법은 전혀 작동하지 않습니다. 2004 년 일부 날짜를 반환합니다.
gegobyte

81

PHP 5.3을 사용하는 경우 DateTime객체와 해당 add메소드를 사용할 수 있습니다 .

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');

상기 살펴보세요 DateInterval생성자 날짜에 추가 할 다른 기간을 구성하는 방법을 볼 수있는 매뉴얼 페이지를 (2 일 것이다 'P2D', 3 것 'P3D'등).

PHP 5.3이 없다면, 당신이 strtotime했던 방식대로 사용할 수있을 것입니다 (테스트 한 결과 5.1.6과 5.2.10에서 모두 작동합니다) :

$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"

Daniel은 죄송하지만 웹 서버는 PHP 5.2.6을 실행하므로 작동하지 않습니다
Istari

2
DateTime::constructstrtotime날짜를 구문 분석 하는 것과 동일한 메커니즘을 사용 new DateTime("+1 day $date")하므로 5.3을 요구하지 않는 작업도 수행 할 수 있습니다.
Gordon

나는 이것을 줄이려고하지 않았다. 그러나 어떻게 든 나는 = /
Steven

이것은 5.5 PHP에 대한 실제 대답
TheLegendaryCopyCoder

29

PHP 5.2부터는 DateTime 객체와 함께 modify를 사용할 수 있습니다.

http://php.net/manual/en/datetime.modify.php

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');

월을 추가 할 때는주의하십시오 ...


허용 된 답변은 15000+ 일 동안 답변을 제공합니다.이 답변은 25000+ 일도 추가하면 답변을 제공합니다.
Pradeep Kumar Prabaharan

DateTimeImmutable ()에서이 쿼리를 수행 할 수 있으며 원본을 변경할 위험없이 수정 된 사본을 얻을 수 있습니다.
Xavi Montero

17

다음은 날짜 수정을 보여주는 작은 스 니펫입니다.

$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";

내 관련 (quesiton) [ stackoverflow.com/q/61421783/8919244]을 볼 수 있습니까?
파이살

8

다음 형식을 사용할 수도 있습니다

strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));

이 방법으로 변경 사항을 스택 할 수 있습니다.

strtotime("+1 day", strtotime("+1 year", strtotime($date)));

이 방법과 다른 답변의 방법의 차이점에 유의하십시오. 값을 연결하는 대신 +1 day<timestamp>의 두 번째 매개 변수로 타임 스탬프를 전달하면됩니다 strtotime.


5

일 수에 변수 사용

$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date 

5

다음은 가장 간단한 쿼리 솔루션입니다.

$date=date_create("2013-03-15"); // or your date string
date_add($date,date_interval_create_from_date_string("40 days"));// add number of days 
echo date_format($date,"Y-m-d"); //set date format of the result


0

모두 다음 코드를 사용해야합니다.

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";

1
이렇게하면 안됩니다. 결국 윤초에 문제가 생길 것입니다
Nathan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.