2017-09-12 61 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

相關問題