2012-10-11 37 views
0

$ dates = array(從下面的日期);按日期而非日期排序。 PHP或PHPUnit

我該如何按月份,日期,年份,然後按下面顯示的時間戳排序此數組?

Array (
0 => 'Thu Aug 30 2012 14:38:13 GMT-0700 (PDT)', 
1 => 'Thu Aug 30 2012 14:53:13 GMT-0700 (PDT)', 
2 => 'Thu Aug 30 2012 14:57:42 GMT-0700 (PDT)', 
3 => 'Thu Aug 30 2012 14:58:34 GMT-0700 (PDT)', 
4 => 'Thu Aug 30 2012 14:59:21 GMT-0700 (PDT)', 
5 => 'Thu Aug 30 2012 15:00:11 GMT-0700 (PDT)', 
6 => 'Thu Aug 30 2012 15:01:25 GMT-0700 (PDT)', 
7 => 'Thu Aug 30 2012 15:03:15 GMT-0700 (PDT)', 
8 => 'Thu Aug 30 2012 15:05:56 GMT-0700 (PDT)', 
9 => 'Thu Aug 30 2012 15:06:50 GMT-0700 (PDT)', 
10 => 'Thu Aug 30 2012 15:09:06 GMT-0700 (PDT)', 
11 => 'Thu Aug 30 2012 15:11:32 GMT-0700 (PDT)', 
12 => 'Thu Aug 30 2012 15:20:26 GMT-0700 (PDT)', 
13 => 'Thu Aug 30 2012 15:21:12 GMT-0700 (PDT)', 
14 => 'Thu Aug 30 2012 15:22:00 GMT-0700 (PDT)', 
15 => 'Thu Aug 30 2012 15:22:58 GMT-0700 (PDT)', 
16 => 'Thu Aug 30 2012 15:24:34 GMT-0700 (PDT)', 
17 => 'Thu Aug 30 2012 15:25:35 GMT-0700 (PDT)', 
18 => 'Thu Aug 30 2012 15:26:48 GMT-0700 (PDT)', 
19 => 'Wed Sep 19 2012 09:42:57 GMT-0700 (PDT)', 
20 => 'Fri Oct 05 2012 10:11:28 GMT-0700 (PDT)', 
21 => 'Wed Oct 10 2012 11:27:15 GMT-0700 (PDT)', 
); 

回答

1

的strtotime()到每個時間轉換成一個Unix時間戳,然後日期( 'YMD H:I:S')由日期

例如排序:

$unix = strtotime('Thu Aug 30 2012 14:38:13 GMT-0700 (PDT)'); 

echo date('Y-m-d H:i:s', $unix); 

將輸出:

2012-10-11 15:25:42 

,你可以排序

+0

很抱歉忘了發送$ unix timestamp到日期函數中,它的更新反映了現在 – ContextSwitch

1

有可能是一個更好的解決方案,但這應該工作:

foreach ($dates as $value) { 
    $newDates[strtotime($value)] = $value; 
} 

$newDates = ksort($newDates); 

這將使新陣列$newDates必須通過該鍵的時間戳的關鍵和排序。這將以您已有的格式維護數組的值。如果你想改變格式,你可以這樣做:

$newDates[strtotime($value)) = date("Y-m-d H:i:s", strtotime($value)); // 2012-11-10 12:27:00