복붙노트

날짜에 하루 추가

PHP

날짜에 하루 추가

하루에 날짜를 추가하는 코드는 하루 전에 날짜를 반환합니다. 2009-09-30 20:24:00 하루 추가 후 날짜가 다음 달로 넘어 가야합니다. 1970-01-01 17:33:29

<?php

    //add day to date test for month roll over

    $stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));

    echo 'date before day adding: '.$stop_date; 

    $stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));

    echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
?>

이전에 꽤 비슷한 코드를 사용했는데, 여기서 내가 뭘 잘못하고 있니?

해결법

  1. ==============================

    1.

    <?php
    $stop_date = '2009-09-30 20:24:00';
    echo 'date before day adding: ' . $stop_date; 
    $stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day'));
    echo 'date after adding 1 day: ' . $stop_date;
    ?>
    

    PHP 5.2.0 이상에서는 다음과 같이 할 수도 있습니다 :

    $stop_date = new DateTime('2009-09-30 20:24:00');
    echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); 
    $stop_date->modify('+1 day');
    echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
    
  2. ==============================

    2.

    $date = new DateTime('2000-12-31');
    
    $date->modify('+1 day');
    echo $date->format('Y-m-d') . "\n";
    
  3. ==============================

    3.가장 간단한 솔루션 :

    가장 간단한 솔루션 :

    $date = new DateTime('+1 day');
    echo $date->format('Y-m-d H:i:s');
    
  4. ==============================

    4.그것은 나를 위해 일했다 : 현재 날짜

    그것은 나를 위해 일했다 : 현재 날짜

    $date = date('Y-m-d', strtotime("+1 day"));
    

    anydate :

    date('Y-m-d', strtotime("+1 day", strtotime($date)));
    
  5. ==============================

    5.이 시도

    이 시도

    echo date('Y-m-d H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00"))));
    
  6. ==============================

    6.읽기 쉽고 이해하는 방법 :

    읽기 쉽고 이해하는 방법 :

    $original_date = "2009-09-29";
    
    $time_original = strtotime($original_date);
    $time_add      = $time_original + (3600*24); //add seconds of one day
    
    $new_date      = date("Y-m-d", $time_add);
    
    echo $new_date;
    
  7. ==============================

    7.나는 항상 86400 (하루에 초)을 추가합니다.

    나는 항상 86400 (하루에 초)을 추가합니다.

    $stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400);
    
    echo 'date after adding 1 day: '.$stop_date; 
    

    그것은 당신이 그것을 할 수있는 가장 매끄러운 방법이 아니지만 그것은 작동합니다!

  8. ==============================

    8.Doug Hays의 답변에 동의하는 동안, 나는 strtotime ()이 문자열 (심지어 날짜를 나타내는 것조차도)이 아닌 INT를 두 번째 인수로 기대하기 때문에 코드가 작동하지 않는 이유가 여기에있다.

    Doug Hays의 답변에 동의하는 동안, 나는 strtotime ()이 문자열 (심지어 날짜를 나타내는 것조차도)이 아닌 INT를 두 번째 인수로 기대하기 때문에 코드가 작동하지 않는 이유가 여기에있다.

    최대 오류보고를 켜면 E_NOTICE 레벨 인 "부적절한 숫자 값"오류로 표시됩니다.

  9. ==============================

    9.기존 DateTime 값에 증분을 추가하는 데 사용할 수있는 modify () 메서드입니다.

    기존 DateTime 값에 증분을 추가하는 데 사용할 수있는 modify () 메서드입니다.

    현재 날짜와 시간으로 새 DateTime 개체를 만듭니다.

    $due_dt = new DateTime();
    

    DateTime 객체를 가져 오면 기간을 더하거나 뺍니다.

    $due_dt->modify('+1 day');
    

    PHP 매뉴얼에서 더 많은 것을 읽을 수 있습니다.

  10. ==============================

    10.다음 코드는 현재 연도의 1 월 첫 번째 날을 얻습니다 (그러나 다른 날짜가 될 수 있음). DateTime 클래스와 그 메소드 modify () 및 format ()을 사용하여 해당 날짜에 365 일을 추가합니다 (단, N 일 수 있음). ) :

    다음 코드는 현재 연도의 1 월 첫 번째 날을 얻습니다 (그러나 다른 날짜가 될 수 있음). DateTime 클래스와 그 메소드 modify () 및 format ()을 사용하여 해당 날짜에 365 일을 추가합니다 (단, N 일 수 있음). ) :

    echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Y-m-d')))->modify('+365 days')->format('Y-m-d');
    
  11. from https://stackoverflow.com/questions/1394791/adding-one-day-to-a-date by cc-by-sa and MIT license