2012-08-25 90 views
4

我試圖計算的基礎上,今天的日期(2012年8月24日),以下三個值:用PHP麻煩日期

  1. 這個月的第一個星期六的日期。
  2. 本月第三個星期六的日期。
  3. 下個月第一個星期六的日期。

這是我如何做到這一點在PHP腳本:

// Returns August 2012 
$this_month = date("F Y"); 

// Returns September 2012 
$next_month = date("F Y", strtotime("next month")); 

// Returns August 04th, Saturday 
$t_sat_1st=date('U', strtotime($this_month.' First Saturday')); 

// Returns August 18th, Saturday 
$t_sat_3rd=date('U', strtotime($this_month.' Third Saturday')); 

// Returns September 08th, Saturday 
$n_sat_1st=date('U', strtotime($next_month.' First Saturday')); 

爲什麼錯誤的日期返回的最後一行代碼?我期望它會返回到2012年9月1日。我的代碼有什麼問題?

+0

沒有什麼實際回報你? – think123

+0

而不是2012年9月1日? – think123

+0

@ think123 2012年9月8日返回。 – 0x4B1D

回答

2

我不知道爲什麼你的代碼並不完全正常工作,必須是它解析的方式.. 但儘量

$n_sat_1st=date('U', strtotime('first saturday of ' . $next_month)) 

注「的」是必要的。 此代碼將只在工作5.3+

應當指出的是,顯然有些這些字符串僅在PHP 5.3的工作顯然,值得注意的是:

「這個月的第一天」和「最後一天這個月「。 根據另一個網站上的信息,在PHP 5.3中添加了「XXX日期」 功能。此頁面上

評論 - http://www.php.net/manual/en/datetime.formats.relative.php

我已經在Windows測試這和Ubuntu都PHP 5.3和5.4和它的作品。

如果這不起作用,試試這個

$d = new DateTime($next_month); 
$d->modify('first saturday of this month'); 
echo $d->format('U'); 
+1

''''是我認爲無關的。 – jeremy

+0

-1:在我的本地機器上測試過。沒有返回不同的時間戳。 –

+0

當我使用'''時,返回的日期是12月31日。如果我像@Nile所說的那樣刪除''',我仍然會在9月8日。 – 0x4B1D