날짜에 일수 추가


124

현재 날짜에 일수를 추가하고 싶습니다. 다음 코드를 사용하고 있습니다.

$i=30;
echo $date = strtotime(date("Y-m-d", strtotime($date)) . " +".$i."days");

그러나 적절한 날짜를 얻는 대신 나는 이것을 얻고 있습니다 : 2592000

제안 해주세요.




4
검색 [php] [date] add상자에서 와 같이 괄호로 묶인 태그 이름을 사용 하여 검색합니다. 이와 같은 질문에 대한 많은 답변을 찾을 수 있습니다.
Mikel 2011 년

답변:


247

이것은

echo date('Y-m-d', strtotime("+30 days"));

strtotime

미국 영어 날짜 형식을 포함하는 문자열이 주어질 것으로 예상하고 해당 형식을 Unix 타임 스탬프 (1970 년 1 월 1 일 00:00:00 UTC 이후의 초 수)로 구문 분석하려고 시도합니다. 지금이 제공되지 않은 경우 현재 시간입니다.

동안 date

주어진 정수 타임 스탬프 또는 타임 스탬프가 제공되지 않은 경우 현재 시간을 사용하여 주어진 형식 문자열에 따라 형식화 된 문자열을 반환합니다.

매뉴얼 페이지를 참조하십시오.

및 해당 기능 서명.


일광 절약 시간 및 기타 재미있는 일정 항목을 넘을 때 이것이 문제를 일으킬 것이라고 생각합니다. 그것은 상황에 따라 다릅니다. 30 개의 24 시간 블록을 찾고 있는지 생각 해봐야합니다.이 블록은 일광 절약 시간을 넘을 때 오후 11 시가 될 수 있습니다.
JJ Rohrer 2014

1
@JJRohrer 아니, 그렇지 않습니다. strtotime구성된 시간대에 대한 DST를 고려합니다. DST는이 OP 같은 것을 할 경우에만 문제입니다 : stackoverflow.com/questions/4066035
고든

요점을 알았어. 나는 당신이 언급 한 질문에 조금 더 가까운 것을 해결하기 위해이 질문에 도착했습니다. 나는 다른 사람들이 날짜 계산을 진지하게 생각하는 것에 대해 위의 의견을 통해 모든 예외를 잊어 버리기 쉽기를 바랍니다.
JJ Rohrer 2014

64

이거 좋을지도 몰라

function addDayswithdate($date,$days){

    $date = strtotime("+".$days." days", strtotime($date));
    return  date("Y-m-d", $date);

}

4
위의 솔루션은 빠른 솔루션이 필요하고 함수를 생성하지 않으려는 경우에도 한 줄로 압축 할 수 있습니다. echo date ( "Ymd", strtotime ( "+ 12days", strtotime (20130101)))
Mayank Jaiswal

46
$date = new DateTime();
$date->modify('+1 week');
print $date->format('Y-m-d H:i:s');

또는 print date('Y-m-d H:i:s', mktime(date("H"), date("i"), date("s"), date("m"), date("d") + 7, date("Y"));


이 방법은 교차 일광 절약 시간을 해결합니다. PHP가 윤초와 같은 다른 시간 문제를 고려하는지 확실하지 않지만, 필요에 따라 달력 일을 처리하는 경우 DateTime 대 StrToTime을 사용하는 것이 좋습니다.
JJ Rohrer

@chx이 솔루션은 또한 더 신중하게 날짜를 허용합니다. 예 : new DateTime ( '2016-12-09 10:35:58'); 데이터베이스 타임 스탬프에서 가져온 것입니다 ...
mshaffer


10

특정 날짜로부터 5 일의 날짜를 원하는 경우 다음과 같이 추가 할 수도 있습니다.

다음과 같은 날짜가있는 변수가 있습니다 (입력 또는 DB에서 가져 오거나 하드 코딩 됨).

$today = "2015-06-15"; // Or can put $today = date ("Y-m-d");

$fiveDays = date ("Y-m-d", strtotime ($today ."+5 days"));

echo $fiveDays; // Will output 2015-06-20

7

일광 절약 시간으로 인해 시계가 변경되면 요일 만 계산할 때 몇 가지 문제가 발생할 수 있습니다.

이를 처리하는 작은 PHP 함수가 있습니다.

function add_days($date, $days) {
    $timeStamp = strtotime(date('Y-m-d',$date));
    $timeStamp+= 24 * 60 * 60 * $days;

    // ...clock change....
    if (date("I",$timeStamp) != date("I",$date)) {
        if (date("I",$date)=="1") { 
            // summer to winter, add an hour
            $timeStamp+= 60 * 60; 
        } else {
            // summer to winter, deduct an hour
            $timeStamp-= 60 * 60;           
        } // if
    } // if
    $cur_dat = mktime(0, 0, 0, 
                      date("n", $timeStamp), 
                      date("j", $timeStamp), 
                      date("Y", $timeStamp)
                     ); 
    return $cur_dat;
}

7

시도해 볼 수도 있습니다.

$date->modify("+30 days");


6

타임 코드를 조작하거나 strtotime () 을 사용하여이를 수행 할 수 있습니다 . 다음은 strtotime을 사용하는 예입니다.

$ data [ 'created'] = date ( 'Ymd H : i : s', strtotime ( "+ 1 주"));


6

strtotime ()을 사용할 수 있습니다.
$data['created'] = date('Y-m-d H:m:s', strtotime('+1 week'));


6

나는 이것이 오래된 질문이라는 것을 알고 있지만 PHP <5.3의 경우 이것을 시도 할 수 있습니다.

$date = '05/07/2013';
$add_days = 7;
$date = date('Y-m-d',strtotime($date) + (24*3600*$add_days)); //my preferred method
//or
$date = date('Y-m-d',strtotime($date.' +'.$add_days.' days');


5
$date = "04/28/2013 07:30:00";

$dates = explode(" ",$date);

$date = strtotime($dates[0]);

$date = strtotime("+6 days", $date);

echo date('m/d/Y', $date)." ".$dates[1];

4

이것을 시도 할 수 있습니다.

$i=30;
echo  date("Y-m-d",mktime(0,0,0,date('m'),date('d')+$i,date('Y')));

3

간단하고 최상

echo date('Y-m-d H:i:s')."\n";
echo "<br>";
echo date('Y-m-d H:i:s', mktime(date('H'),date('i'),date('s'), date('m'),date('d')+30,date('Y')))."\n";

이 시도


3
//add the two day

$date = "**2-4-2016**"; //stored into date to variable

echo date("d-m-Y",strtotime($date.**' +2 days'**));

//print output
**4-4-2016**

2

이 addDate () 함수를 사용하여 일, 월 또는 년을 더하거나 뺍니다 (보조 함수 reformatDate ()도 필요합니다).

/**
 * $date self explanatory
 * $diff the difference to add or subtract: e.g. '2 days' or '-1 month'
 * $format the format for $date
 **/
    function addDate($date = '', $diff = '', $format = "d/m/Y") {
        if (empty($date) || empty($diff))
            return false;
        $formatedDate = reformatDate($date, $format, $to_format = 'Y-m-d H:i:s');
        $newdate = strtotime($diff, strtotime($formatedDate));
        return date($format, $newdate);
    }
    //Aux function
    function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
        $date_aux = date_create_from_format($from_format, $date);
        return date_format($date_aux,$to_format);
    }

참고 : PHP> = 5.3에만 해당



1
//Set time zone
date_default_timezone_set("asia/kolkata");
$pastdate='2016-07-20';
$addYear=1;
$addMonth=3;
$addWeek=2;
$addDays=5;
$newdate=date('Y-m-d', strtotime($pastdate.' +'.$addYear.' years +'.$addMonth. ' months +'.$addWeek.' weeks +'.$addDays.' days'));
echo $newdate;

1

이것은 오래된 질문이지만,이 방법은 많은 상황을 필요로하고 강력 해 보입니다. PHP 5.3.0 이상이 필요합니다.

$EndDateTime = DateTime::createFromFormat('d/m/Y', "16/07/2017");
$EndDateTime->modify('+6 days');
echo $EndDateTime->format('d/m/Y');

날짜 문자열에 대해 모든 유형의 형식을 가질 수 있으며 이것이 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.