У меня есть строка в формате YYYYMMDDHH24MISS, которая представляет собой год, месяц, день, часы, минуты, секунды. Я хочу преобразовать это в дату, добавить один день и вернуть его в том же формате. Звучит просто, но я не могу заставить это работать. Я пробовал несколько разных способов, где $ field3 содержит строку даты, например:
$end_date = strtotime(substr($field3,1,8));
$date_interval = DateInterval::createFromDateString('1 day');
$new_end_date = date_add($end_date, $date_interval);
$field3 = ($new_end_date->format('YYYYMMDD')).substr($field3,8,6);
В этом примере $ new_end_date содержит «false».
Пример строки даты и времени: 20170912124159, являющийся 09.12.2017 12:41:59
Формат вашей входной строки может быть проанализирован конструктором класса DateTime
(а также date_create()
а также strtotime()
) без проблем.
$date = new DateTime('20170912124159');
$date->add(new DateInterval('P1D'));
echo($date->format('Y-m-d H:i:s'));
# The output is:
# 2017-09-13 12:41:59
Вы также можете отформатировать дату в виде строки, используя формат YmdHis
чтобы получить дату изменения в том же формате, что и входная строка.
echo($date->format('YmdHis'));
# 20170913124159
Прочитать о DateTime
а также DateInterval
.
Вы можете попробовать что-то вроде этого:
$date = DateTime::createFromFormat('YmdHis', '20170912131313');
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d');
Для дополнительной информации: http://php.net/manual/en/datetime.add.php
Пожалуйста, попробуйте это
$date = date("Y/m/d H:i:s"); // or '2017/09/30 20:24:00'
$ndate = date('Y/m/d H:i:s', strtotime($date . ' +1 day'));
echo 'date after adding 1 day: ' . $ndate;