날짜에 일수 추가


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.