2012-03-29 18 views
5

我在1and1處的共享託管軟件包僅包含PHP 5.2.17 - 因此我無法使用DateTime對象。很煩人!使用PHP 5.2將X周添加到日期中

目前,我有這個代碼

$eventDate = new DateTime('2013-03-16'); // START DATE 
$finishDate = $eventDate->add(new DateInterval('P'.$profile["Weeks"].'W')); 

但顯然它不會工作。

我該如何使用PHP5.2的代碼? (該代碼將周X號到一個特定的日期。)

回答

11

剛剛獲得的時間戳和strtotime()並添加一個星期的X *秒

$newTime = strtotime('2013-03-16') + ($numberOfWeeks * 60 * 60 * 24 * 7); // 604800 seconds 

還是什麼,我只是發現:

$newTime = strtotime('+'.$numberOfWeeks.' weeks', strtotime('2013-03-16')); 

另外,您可以利用DateTime類。使用方法modify更改日期(如在strtotime):

$d = new DateTime('2013-03-16'); 
$d->modify('+'.$numberOfWeeks.' weeks'); 
+1

'strtotime()'帶來比看起來更多的問題。使用'DateTime'類函數可以避免在計算時間段時出現的奇怪錯誤,並且您永遠不會錯過任何一秒鐘。 – 2012-10-25 13:15:01

+0

@Paul你知道這是關於在PHP 5.2中缺少'DateInterval'嗎?當然總有其他答案。 – 2012-10-25 13:44:21

+0

[_ DateTime :: modify()'](http://www.php.net/manual/en/datetime.modify.php),來自_PHP 5.2.0_?它也適用於正面和負面的價值。就在幾天前,我已經糾正了我自己的產品中的錯誤。我計算時間間隔的差異,並在2(10月 - 11月)的月份失去2個星期。更正爲'DateTime'實現,就是這樣。 – 2012-10-25 14:37:04

3

可以使用DateTime對象在PHP 5.2,它只是補充說,在PHP 5.3中添加方法。您可以在PHP 5.2中使用the modify method

$finishDate = $eventDate->modify('+'.$profile["Weeks"].' weeks'); 

請注意,這將修改在要執行操作的對象。所以$ eventDate也會被改變。