2013-12-03 25 views
0

我使用這個功能:威爾PHP日期()和的strtotime()返回錯誤的時間,一週str所二月的一個月?

date("Y-m-d", strtotime("-1 week")); 

什麼我徘徊是,如果我用這個函數這樣,才跳二月的一個月?

我問的原因是因爲我知道,如果你這樣做:在這個例子中

date("m/Y",strtotime("-1 months")); 

像: PHP date() and strtotime() return wrong months on 31st

它會跳二月

月份
+2

你嘗試了嗎?這將告訴你答案。 –

+0

我不知道怎麼樣。因爲我不知道,如果我給它添加「-10個月」來的strtotime()是否會影響結果在某種程度上,任何建議? – jnbdz

+0

我懷疑抵消*周*會跳* *月*。 – user2864740

回答

2

嘗試這個。 (PHP的面向對象的格式。)

<?php 

$d = new DateTime; 
$interval = new DateInterval('P1W'); 
for ($i = 25; $i < 60; $i++) 
{ 
    $d->setDate(2014, 2, $i); 
    echo $d->format('Y-m-d'), " "; 

    $d->sub($interval); 
    echo $d->format('Y-m-d'), PHP_EOL; 
} 

當你說1周沒有什麼含糊不清你的意思的天數。當我說周,我總是意味着7天。但長期1個月是模糊的。我可能意思是28,29,30或31天。 (在上面的代碼中將「P1W」更改爲「P1M」,然後再次運行它。查看結果中的最後四行

還要注意,php documentation for strtotime()表示「使用此函數進行數學運算並不可取。最好在PHP 5.3及更高版本中使用DateTime :: add()和DateTime :: sub(),或者在PHP 5.2中使用DateTime :: modify()。

另請參見this warning:示例3當心減去月

相關問題