2016-02-12 53 views
0
返回一週的錯誤

我有以下數據出來的date_parse天按日期PHP

$date_array['year'] = '2015'; 
$date_array['month'] = '4'; 
$date_array['day'] = '25'; 

我試圖讓一週的某一天爲這個特定日期:

echo date('w',strtotime($date_array['day'] . " " . $date_array['month'] . " " . $date_array['year'])); 

這返回4,這是星期四的代碼,而那一天是星期六,所以我期待6。我也試着用strtotime重新排序元素,認爲它可能與我的時區設置有關,但我仍然得到4

+0

值得關注'strtotime'支持的[formats](http://php.net/manual/en/datetime.formats.date.php)。 –

+0

2015年4月25日星期六... –

+0

@JanChimiak是啊對xD我會更新這個問題。 – user1301428

回答

2

這裏的問題是,strtotime()不識別您使用的formatDD MM YYYY;您可以使用國際格式(YYYY-MM-DD)或歐洲(DD-MM-YYYY)或美國(MM/DD/YYYY)。

例如:

echo date('w', strtotime("$date_array[year]-$date_array[month]-$date_array[day]")); 

6,這是星期六和是正確的。

+1

我已經決定接受這個答案,因爲它也解釋了*爲什麼*的東西沒有工作。 upvoted所有其他的答案了。 – user1301428

+0

好的,但我建議'mktime()'因爲你避免了這種錯誤(這是我的解釋) –

2

您可以用這種方式:

$d = $date_array; 
date("w", mktime(0, 0, 0, $d['month'], $d['day'], $d['year'])); 

我用mktime(),因爲它完美的作品,你會得到一個正確的時間戳。此代碼打印6這是正確的一天。

請注意,自PHP 5.1.0以來,您可以使用L參數以更邏輯的人類方式獲取從1(星期一)到7(星期日)的日子。

date("L", mktime(0, 0, 0, $d['month'], $d['day'], $d['year'])); 

更多信息:http://php.net/manual/en/function.date.php

1

對下面的代碼來看看:

$date_array = array(); 
$date_array['year'] = '2015'; 
$date_array['month'] = '04'; 
$date_array['day'] = '25'; 

$d = $date_array; 

echo date('w-L-D',strtotime($date_array['year']."-".$date_array['month'] . "-" . $date_array['day']));//output: 6-0-Sat 

更多細節上的格式有alook在PHP: date - Manual