2017-09-12 65 views
1

我在YYYYMMDDHH24MISS格式是年,月,日,时,分,秒的字符串。我想将其转换为日期,将其添加一天并以相同的格式返回。听起来很简单,但我无法得到这个工作。我已经尝试了多种不同的方式,其中$ Field3包含例如日期字符串:1天添加到自定义格式的日期字符串

   $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包含“假”。

实例日期时间字符串:20170912124159为2017年12月9日12时41分59秒

+1

什么是日期格式'24MI'的含义是什么?用一些输入字符串及其相应日期的示例更新问题。 – axiac

+0

请查看[this](https://stackoverflow.com/questions/1394791/adding-one-day-to-a-date)。这显示了非常简单的方法来添加一天的日期 – SacrumDeus

+0

我不会依靠strtotime。你可以直接控制格式:$ end_date = DateTime :: createFromFormat('Ymd',substr($ field3,0,8)); – Yosh

回答

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

请试试这个

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

为什么负面?它不适合你吗?或者请更正 – Naincy

+0

如何处理代码中的输入字符串? ['date()'](http://php.net/manual/en/function.date.php)将日期格式化为字符串,OP已经有字符串,并希望将它们转换回日期以便处理它们。只有一个参数'date()'格式化当前时间;这个问题不关心当前时间。这些理由不足以让我们望而却步吗? – axiac

+0

@axiac代替日期,你可以给它的字符串格式,它将工作。看到我更新的答案。 – Naincy

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

相关问题