добавление одного дня в пользовательскую строку даты

У меня есть строка в формате 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

1

Решение

Формат вашей входной строки может быть проанализирован конструктором класса 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.

1

Другие решения

Вы можете попробовать что-то вроде этого:

$date = DateTime::createFromFormat('YmdHis', '20170912131313');
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d');

Для дополнительной информации: http://php.net/manual/en/datetime.add.php

0

Пожалуйста, попробуйте это

$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;
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector