通过日期和时间php转换排序



我在数据库中存储了3个数据表,每个数据表都包含一个日期和一个时间字段。我从每个表中提取所有相关的数据,并将它们连接到一个数组中。我现在需要先按日期排序,然后按时间排序。我目前正在按日期排序,这很好,但时间有时是正确的,有时是错误的

我目前正在使用什么来收集数据:

$results = [];
$sql_assign = mysql_query("SELECT * FROM `tk_assign` WHERE ticket_id = $tk_id");
$sql_update = mysql_query("SELECT * FROM `tk_update` WHERE ticket_id = $tk_id");
$sql_status = mysql_query("SELECT * FROM `tk_status_change` WHERE ticket_id = $tk_id");
while($row = mysql_fetch_assoc($sql_assign)){
     $results[] = $row;
}
while($row = mysql_fetch_assoc($sql_update)){
     $results[] = $row;
}
while($row = mysql_fetch_assoc($sql_status)){
     $results[] = $row;
}

我用什么来分类

$orderByDate = $my2 = array();
foreach($results as $key=>$row)
{
    $my2 = explode('/',$row['date']);
    $my3 = explode('/',$row['time']);
    $my_date2 = $my2[1].'/'.$my2[0].'/'.$my2[2];
    $orderByDate[$key] = strtotime($my_date2);  
}    
$sorted = array_multisort($orderByDate, SORT_ASC, $results);

我曾想过把它变成时间码,但也没用。如有任何帮助,将不胜感激

示例时间和日期:

Date: 22/09/2015 Time: 15:32:12
Date: 22/09/2015 Time: 14:50:28
Date: 25/09/2015 Time: 12:21:58

我认为这一行是错误的:

$my3 = explode('/',$row['time']);

可能应该是:

$my3 = explode(':',$row['time']);

在任何情况下,您甚至没有在排序算法中使用$my3变量。

这是另一个解决方案。在合并数组之后,添加以下代码:

for ($i =0; $i < count($results); $i++){
    $results[$i]['datetime'] = $results[$i]['date'].' '.$results[$i]['time'];
}   
function compareDateTime($a, $b) {
    $mya = new DateTime();
    $mya->createFromFormat('d/m/Y H:i:s', $a['datetime']);
    $myb = new DateTime();
    $myb->createFromFormat('d/m/Y H:i:s', $b['datetime']);
    if ($mya == $myb)
        return 0;
    if ($mya > $myb)
        return 1;
    return -1;
}
usort($results, 'compareDateTime');

如果您使用的是PHP > 5.2,那么您应该使用以下方式。

$orderByDate = $my2 = array();
foreach($results as $key=>$row)
{
    $myDateTime = DateTime::createFromFormat('d/m/Y', $date);
    $newDateString = $myDateTime->format('Y-m-d');
    $orderByDate[$key] = strtotime($newDateString." ".$row['time']);  
}    
$sorted = array_multisort($orderByDate, SORT_ASC, $results);

相关内容

  • 没有找到相关文章

最新更新