2011-07-28 51 views
3

我今天感覺有點厚,也許有點累了..PHP將日期添加到特定日期?

我想對一個字符串日期添加天...

$startdate = "18/7/2011"; 

$enddate = date(strtotime($startdate) . " +1 day"); 
echo $startdate; 
echo $enddate; 

我的頭不與它...其中我錯了嗎?

由於

回答

9

要麼

$enddate = date(strtotime("+1 day", strtotime($startdate))); 

$enddate = date(strtotime($startdate . "+1 day")); 

應該工作。但是,兩者都沒有與日期18/7/2011一起工作。他們與7/18/2011工作正常:http://codepad.viper-7.com/IDS0gI。可能是一些本地化問題。

在第一種方法中,使用strtotime的第二個參數表示相對於該日期添加一天。在第二種方式中,strtotime將所有數據都計算出來。但很顯然,只有當日期是在美國的日期格式,或在其他使用格式破折號:http://codepad.viper-7.com/SKJ49r

+1

我想你可能只能夠做'的strtotime($開始日期。 「+1日」)'(如我編輯前的回答和PtPazuzu的回答),但我不確定,因爲我現在無法測試。根據文檔,這應該起作用。 – NickAldwin

+0

不,那也行不通... – Lee

+0

我試過了:'strtotime'似乎是搞亂了18/7而不是7/18。與7/18,兩種方式工作:http://codepad.viper-7.com/IDS0gI – NickAldwin

0

日期()的第一個參數是格式

DMY G:我:■

例如

另外,你的$ STARTDATE無效

0

你可能尋找strtotime($startdate . "+ 1 day")什麼

+0

我覺得可能會工作,但我沒有PHP方便測試。而且我似乎無法在文檔中找到該文件... – NickAldwin

+0

不合適也不起作用... – Lee

-1

這將工作

$startdate = "18/7/2011"; 
$enddate = date('d/m/Y', strtotime($startdate) + strtotime("+1 day", 0)); 
echo $startdate; 
echo $enddate; 

第一,開始日期被解析爲整數,然後解析相對時間。

你也可能利用的strtotime的第二parametr:

$startdate = "18/7/2011"; 
$enddate = date('d/m/Y', strtotime("+1 day", strtotime($startdate))); 
+1

這將在一起添加兩個日期,而不是添加1天。 –

+0

這第一個給我18/7/2011和1311961884 – Lee

+2

我建議你試試看。仔細看看你的第一個例子。 –

0

首先,你必須通過調用changeDateFormat( 「18/7/2011」)更改日期格式 :收益:2011-07-18 如果您的解析參數

功能changeDateFormat($ vdate){
    $ POS = strpos($ vdate, '/');
    if($ pos === false)return $ vdate;
        $ pieces = explode(「/」,$ vdate);
          $ thisday = str_pad($ pieces [0],2,「0」,STR_PAD_LEFT);
        $ thismonth = str_pad($ pieces [1],2,「0」,STR_PAD_LEFT);
        $ thisyear = $ pieces [2];
        $ thisdate =「$ thisyear- $ thismonth- $ thisday」;
        return $ thisdate;
}

這..

$ STARTDATE = changeDateFormat($開始日期);
$ enddate = date('Y-m-d',strtotime($ startdate。「+」。$ noOfDays。「day」));

3

試試這個,(測試並運行良好)

date('d-m-Y',strtotime($startdate . ' +1 day')); 
date('d-m-Y',strtotime($startdate . ' +2 day')); 
date('d-m-Y',strtotime($startdate . ' +3 day')); 
. 
. 
. 
. 
. 
date('d-m-Y',strtotime($startdate . ' +30 day'));