2010-03-24 66 views
4

我在PHP 5.2.12嘗試下面的命令:PHP的strtotime(YYYY-MM最後一天),一個月下來錯誤

print (date('Y-m-d', strtotime('2009-12 last day'))); 

關於到php.net manual

date('m/d/y', strtotime('2009-03 last day')); # 03/31/09 

它應該展示2009年3月的最後一天(2009-03-31)!

礦回報上個月的最後一天?爲什麼? :

2009-11-30 
+1

它不是手動,這只是用戶的帖子。你可以直接問她,我猜想http://stackoverflow.com/users/111362/katylava – SilentGhost 2010-03-24 18:35:28

+0

在我的Mac上工作正常(PHP 5.3):2009-12-31 – 2010-03-24 18:55:37

回答

9

您發佈的代碼以您描述的方式失敗;似乎PHP手冊頁中的描述(正如SilentGhost所提到的,只是用戶註釋)是未經過驗證的代碼。

如果你需要一個給定月份的最後一天,試試這個:

date('Y-m-d', strtotime("2009-12 next month - 1 hour")); 
+3

我總是使用12小時,以防某人某時決定夏令時是某個月的第一天或最後一天。 – 2010-07-21 21:33:42

2

如果你使用PHP 5.3嘗試使用DateTime類:

<?php 
    $date = new DateTime("2009-03-01"); 
    $date->modify("last day of previous month"); 
    echo $date->format("m/d/y"); 
?> 

它必須是5.3 $date->modify("last day of previous month");將無法​​在5.2。*或更早的版本中使用。

0

我覺得你只需要使用相對格式不正確的,這對我的作品:

echo date('m/d/y', strtotime('last day of 2009-12')); 

the docs

'last day' ' of'? - 一天設置爲當前的最後一天月。此短語最好與其後的月份名稱一起使用。 - "last day of next month"

0

date("Y-m-t", strtotime("201512"));

對於2015年12月