在PHP

时间:2016-09-29 12:06:01

标签: php sorting date

我正在尝试对日期表进行排序,但我似乎遇到的问题是这些日期是格式为d M Y的字符串(所以类似于"04 SEPT 2016")。

我假设这些日期没有作为时间戳存储在数据库中(如果有意义),而是作为普通字符串,需要转换回可以排序的东西。

4 个答案:

答案 0 :(得分:1)

在PHP中,您可以使用datetime界面。请参阅联机帮助页上有关格式说明符的详细信息。它允许通过给出格式说明符来将日期解析为对象。 DateTime类支持排序和运算符,例如<>==等。

您可以使用以下方式解析日期:

$list = [];
$d = DateTime::createFromFormat($time, 'd M Y');
$list[] = $d;  ### add to list

现在您可以将其排序为DateTime支持排序:

sort($list);
reset($list);
foreach($list as $sorted_date) {
  ...
}

另见2

答案 1 :(得分:1)

它确实有意义,你如何处理这取决于你想做什么。

您可以使用php的datetime函数将字符串转换为日期: (程序方法)

<?php
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
?>

http://php.net/manual/en/datetime.createfromformat.php

或者,如果你想在MySQL数据库查询中选择/更新/修改/ etc(稍微假设你将使用MySQL),你可以使用STR_TO_DATE函数

STR_TO_DATE('21,5,2013','%d,%m,%Y');

http://www.mysqltutorial.org/mysql-str_to_date/

这里更大的问题是你是否有空间将日期从字符串转换为数据库中的日期,因为这是正确的做事方式。

答案 2 :(得分:0)

SELECT STR_TO_DATE(字段,'%m /%d /%Y') FROM表ORDER BY STR_TO_DATE(字段,'%m /%d /%Y')

答案 3 :(得分:0)

如果你想用PHP排序,那么你可以尝试这个技巧:

<?php
    $myarray=array(
        "2 SEPT 2016",
        "9 SEPT 2016",
        "1 OCT 2016",
        "3 DEC 2016",
        "4 SEPT 2016",
    );
    usort($myarray, "cmpare");
    print_r($myarray);

    function cmpare($x, $y){ 
        return strcmp(strtotime($y), strtotime($x)); 
    }
?>