将一天添加到自定义格式化日期字符串

时间:2017-09-12 07:58:25

标签: php

我有一个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是12/09/2017 12:41:59

3 个答案:

答案 0 :(得分: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

了解DateTimeDateInterval

答案 1 :(得分:0)

您可以尝试这样的事情:

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

有关详细信息:http://php.net/manual/en/datetime.add.php

答案 2 :(得分:-1)

请试试这个

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