Добавление одного дня к дате



мой код для добавления одного дня к дате возвращает дату перед добавлением дня:
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;
?>


я использовал довольно похожий код раньше, что я делаю неправильно здесь?

480   10  

10 ответов:

<?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');
$date = new DateTime('2000-12-31');

$date->modify('+1 day');
echo $date->format('Y-m-d') . "\n";

простое решение:

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

это сработало для меня: На Текущую Дату

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

для anydate:

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

попробуй такое

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

простой для чтения и понимания способ:

$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;

Я всегда просто добавляю 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; 

это не самый гладкий способ, которым вы могли бы это сделать, но он работает!

хотя я согласен с ответом Дуга Хейса, я позвоню сюда, чтобы сказать, что причина, по которой ваш код не работает, заключается в том, что strtotime () ожидает INT в качестве 2-го аргумента, а не строки (даже той, которая представляет дату)

Если вы включите Max error reporting, вы увидите это как ошибку "a non well formed numeric value", которая является уровнем E_NOTICE.

The modify() метод, который может быть использован для добавления приращения к существующей DateTime значение.

создать новый DateTime объект с текущей датой и временем:

$due_dt = new DateTime();

после DateTime объект, вы можете управлять его значением, добавляя или вычитая периоды времени:

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

вы можете прочитать больше о руководство PHP.

следующий код получает первый день января текущего года (но это может быть другая дата) и добавляет 365 дней к этому дню (но это может быть N дней), используя класс DateTime и его метод modify () и format ():

echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Y-m-d')))->modify('+365 days')->format('Y-m-d');

Comments

    Ничего не найдено.