2013-04-09 231 views
-1

我有一個三個參數,我希望得到確切的日期。我有以下參數:PHP日期時間:獲取日期基於月,周和一週的日期

Month : integer (01-12) | 
Week of month : integer (01-05) | 
Day of week : (Sunday-Saturday) 

我有三個以上的參數,我想獲取日期。

例如:

假設我有01 as month 01爲週週的一天,週五則它應該返回03-01-2014

假設:任何投入將是未來唯一的日期。

+0

你能解釋的第一個月01和第01周,週五是如何等於2014年3月1日,該位是非常混亂 – Dale 2013-04-09 12:40:24

+3

在這個基礎上,你將如何從這些參數中獲取YEAR? – swapnesh 2013-04-09 12:40:30

+0

直到我記住標準的美國日期符號與世界其他地方不同時,我對你的結果感到非常困惑。您應該澄清(對於美國回答者)您的日期標記爲DD-MM-YYYY(而不是MM-DD-YYYY)。 – thelr 2013-04-09 12:45:59

回答

2

使用strtotime。需要寫出星期幾和星期幾(2013年1月1日星期五),所以我將月份數字轉換爲名稱。我假設星期幾已經是「星期五」。

function calcDate($day,$week,$month) 
{ 
    $thisYear = date("Y"); 

    $monthName = date("F", mktime(0, 0, 0, $month, 10)); //http://gilbert.pellegrom.me/php-month-number-to-month-name-the-easy-way/ 
    $query = $week." ".$day." ".$monthName; 
    $outDate = strtotime($query." ".$thisYear)); 

    if (outDate < time()) 
    { 
    $outDate = strtotime($query." ".($thisYear+1)); 
    } 
    return date('d-m-Y', $outDate); 
} 
2

我敢肯定,這可以進一步擴展:

$month = 'January'; 
$week = 0; 
$day = 'friday'; 
$year = date("Y") + 1; 

$d = new DateTime(); 
$d->modify("first {$day} of {$month} {$year} +{$week} week"); 
echo $d->format('d/m/Y'); 
+0

+1這已經超越了我的想法 - 我不知道是誰貢獻了PHP日期/字符串解析算法,但他們是我眼中的傳說,因爲它實際上是神奇的! – Emissary 2013-04-09 13:18:21

+0

@Emissary,我只是通過它的手冊頁閱讀,是的它真的是真棒:) ['相對時間格式](http://www.php.net/manual/en/datetime.formats.relative。 PHP) – Dale 2013-04-09 13:20:30

相關問題