我有一个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
答案 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
答案 1 :(得分:0)
您可以尝试这样的事情:
$date = DateTime::createFromFormat('YmdHis', '20170912131313');
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d');
答案 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;