这是我尝试按日期排序的数组。
Array (
[0] => 2013 Aug 01
[1] => 2013 Aug 02
[2] => 2013 Aug 05
[3] => 2013 Aug 06
[4] => 2013 Aug 07
[5] => 2013 Aug 08
[6] => 2013 Aug 09
[7] => 2013 Jul 11
[8] => 2013 Jul 12
[9] => 2013 Aug 12
[10] => 2013 Aug 13
[11] => 2013 Aug 14
[12] => 2013 Jul 15
[13] => 2013 Aug 15
[14] => 2013 Jul 16
[15] => 2013 Jul 17
[16] => 2013 Jul 18
[17] => 2013 Jul 19
[18] => 2013 Aug 19
[19] => 2013 Aug 20
[20] => 2013 Jul 22
[21] => 2013 Aug 22
[22] => 2013 Jul 23
[23] => 2013 Aug 23
[24] => 2013 Jul 24
[25] => 2013 Jul 25
[26] => 2013 Jul 26
[27] => 2013 Jul 29
[28] => 2013 Jul 30
[29] => 2013 Aug 30
)
我尝试了很多方法,但它似乎只按天值排序,月份被忽略。
使用strtotime()
将值从01-08-2013转换为2013年8月1日。
我甚至试图删除所有字符串,只是有一个像01082013这样的整数,但它只是查看它的日期值才能被排序。
提前致谢。
我尝试了这些方法,但只按天值
排序链接到我正在使用的代码http://pastebin.com/Hr0rhUzn
答案 0 :(得分:3)
尝试
$new_arr = array_map('strtotime',$my_arr);
asort($new_arr); // For ascending order
foreach($new_arr as $dates) {
$result_arr[] = date('Y m d' , $dates);
}
print_r($result_arr);
答案 1 :(得分:0)
如果以“2013年8月29日”格式输入日期,则strtotime不会返回时间戳,因为它不是strtotime的有效输入格式。我们需要用破折号替换空格。 这是我的解决方案。
usort($myDateArray, "dateCompare");
function dateCompare($date1, $date2){
if($date1 == $date2){
return 0;
}
return (strtotime(str_replace(" ","-",$date1)) < strtotime(str_replace(" ","-",$date2))) ? -1 : 1;
}