Увеличить текущую дату на 5 дней - PullRequest
7 голосов
/ 29 ноября 2011
$date = date('Y-m-d',current_time('timestamp', 0));

Как изменить $date на $date + 5 days?

Версия PHP - 5.2.

Этот код не работает:

$date_cur = date('Y-m-d',current_time('timestamp', 0));
echo $date_cur . ' <br>';
$date_cur_plus = date($date_cur, strtotime('+5 days'));
echo $date_cur_plus;

Дает мне:

2011-11-29 
2011-11-29

Ответы [ 11 ]

26 голосов
/ 29 ноября 2011
$date = date('Y-m-d', strtotime('+5 days'));
16 голосов
/ 29 ноября 2011

Вы можете использовать mktime(), используя отметку времени.

Что-то вроде:

$date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 5, date('Y')));

Использование strtotime() быстрее, но мой метод все еще работает и гибок в том случае, если вам нужно внести множество изменений. Кроме того, strtotime() не может справиться с неоднозначными датами.

Редактировать

Если вам нужно добавить 5 дней к уже существующей строке даты в формате YYYY-MM-DD, вы можете разбить ее на массив и использовать эти части с mktime().

$parts = explode('-', $date);
$datePlusFive = date(
    'Y-m-d', 
    mktime(0, 0, 0, $parts[1], $parts[2] + 5, $parts[0])
    //              ^ Month    ^ Day + 5      ^ Year
);
4 голосов
/ 16 февраля 2016

Объектно-ориентированный стиль:

<?php
    $date = new DateTime('now');
    $date->add(new DateInterval('P5D'));
    echo $date->format('Y-m-d') . "\n";
?>

Процедурный стиль:

<?php
    $date = date_create('2016-01-01');
    date_add($date, date_interval_create_from_date_string('5 days'));
    echo date_format($date, 'Y-m-d');
?>
2 голосов
/ 11 февраля 2019

На конкретную дату:

$date = '2011-11-01';
$date_plus = date('Y-m-d', strtotime($date.'+5 days'));
echo $date.'<br>'.$date_plus;

Будет выдано:

2011-11-01
2011-11-06
2 голосов
/ 08 февраля 2013

strtotime() очень приятно.Это позволяет вам делать следующее:

$startDate = 'now'; // or choose a certain date you want/have
$startDate = '2013-02-14';
$intervals = array(
    '', 
    '+ 5 days', 
    '+ 31 days', 
    '+ 3 months', 
    '+ 2 years + 2 days'
); 
foreach($intervals as $interval) {
    $combinedDate = $startDate . ' ' . $interval;
    var_dump($combinedDate . ' => ' date('Y-m-d', strtotime($combinedDate)));
}

с результатом:

сейчас => 1360334498 = 2013-02-08

сейчас + 5 дней=> 1360766498 = 2013-02-13

сейчас + 31 день => 1363012898 = 2013-03-11

сейчас + 3 месяца => 1368020498 = 2013-05-08

сейчас + 2 года + 2 дня => 1423579298 = 2015-02-10

или:

2013-02-14 => 1360792800 = 2013-02-14

2013-02-14 + 5 дней => 1361224800 = 2013-02-19

2013-02-14 + 31 день => 1363471200 = 2013-03-17

2013-02-14 + 3 месяца => 1368478800 = 2013-05-14

2013-02-14 + 2 года + 2 дня => 1424037600 = 2015-02-16

2 голосов
/ 29 ноября 2011

Вы можете использовать

strtotime(“+5 days”)

, чтобы получить текущую дату плюс 5 дней или

$targetDate = date($date, strtotime(’+5 days’));
2 голосов
/ 29 ноября 2011
$dateplus5 = date('Y-m-d', strtotime('+5 days'));
2 голосов
/ 29 ноября 2011

Использование strtotime:

$date = date('Y-m-d', strtotime('+5 days'));
0 голосов
/ 10 ноября 2017

, если дата уже существует, вы можете использовать этот код:

$tartDate = date("m/d/Y", strtotime("+1 Day", strtotime($Date)));
0 голосов
/ 26 декабря 2016

Разве не должно быть так?

$date_cur = date('Y-m-d', current_time('timestamp', 0));
echo $date_cur . ' <br>';
$date_cur_plus = date('Y-m-d', strtotime('+5 days', current_time('timestamp', 0) ) );
echo $date_cur_plus;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...