2014-10-02 105 views
0

無法獲得將字符串日期增加一天的方法。php日期從數組日期增加

因此,它以30/01/2001爲例。

$linedata[8] = 30/01/2001; 

然後我使用日期分析表格格式。

$thetime = date_parse_from_format("j/n/Y",$linedata[8]); 

返回值是數組。是否有可能從這個數組中增加日期,或者我應該用不同的函數解析日期?

回答

1

你不想使用date_parse_from_format(),因爲這只是給你很多的日期部分,它需要你修改合適的部分,然後重新組裝它們。你也有閏年的問題,並在本月的最後一天工作。

你想用DateTime::createFromFormat()它給你一個DateTime對象,它是易於使用和處理之類的東西閏年和天一個月數:

$date = DateTime::createFromFormat("j/n/Y", '30/01/2001'); 
$date->modify('+1 day'); 
echo $date->format('Y-m-d'); 

Demo

+0

看起來整潔但我返回錯誤,致命錯誤:調用一個非對象的成員函數modify().....它是一個PHP版本的問題? – Pat 2014-10-02 14:13:16

+0

你使用的是什麼版本? [這將使用PHP 5.3+](http://3v4l.org/Xfo94) – 2014-10-02 14:17:06

+0

版本是5.4.22。我只是檢查了修改功能,並應該罰款爲5.2.0 – Pat 2014-10-02 14:20:01

0

你可以增加這樣的日期:

$thetime["day"]++; 

$thetime["day"] = $thetime["day"] + 1; 

那麼你就可以得到遞增日期這樣

$idate = $thetime["day"]."/".$thetime["month"]."/".$thetime["year"]; 
+0

2月28日非閏年會發生什麼?還是1月31日?這完全打破了。 – 2014-10-02 14:10:42

0

這會工作(提供$ linedata [8]包含日期):

$thetime = date('j/n/Y', strtotime($linedata[8] . ' +1 day')); 
+0

該日期格式不是[strtotime可以使用](http://php.net/manual/en/datetime.formats.date.php)。 – 2014-10-02 14:09:15