2016-09-29 1 views
-1

日付の表を並べ替えることを試みていますが、問題はこれらの日付がd M Y"04 SEPT 2016"など)の形式の文字列であることです。PHPで日付を変換してソートする

私はこれらの日付がデータベースにタイムスタンプとして格納されていないと仮定していますが、それはソートできるものに変換する必要がある通常の文字列です。

+0

あなたはこの形式のように使用することができます:$ current_date_time = $タのデータ>フォーマット( 'YmdのG:I:S'); ...あなたは明確な情報を与えた場合。私はあなたを解決するのを助けることができます.. –

答えて

1

PHPでは、datetimeインターフェイスを使用できます。マンページの書式指定子の詳細を参照してください。それは、フォーマット指定子を与えることによってオブジェクトに日付を解析することを可能にします。

sort($list); 
reset($list); 
foreach($list as $sorted_date) { 
    ... 
} 
を: DateTimeソートサポートとして今、あなたはそれを並べ替えることができます

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

を:DateTimeクラスは、あなたが使用して日付を解析することができます

をソートやなど<>==、などの演算子をサポート

も参照してください2

1

それは意味がありますこのアプローチは、あなたがしたいことに依存します。

あなたは、PHPの日時関数を使用して、日付に文字列を変換することができます: (手続き方法)

<?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


それとも、あなたは/更新を選択したい場合は/ etc /変更MySQLデータベースクエリ(わずかな前提としてMySQLを使用することを前提としています)では、STR_TO_DATE関数を使用できます。

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

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

ここで大きな疑問は、これは物事を行うための正しい方法であるとして、あなたは、DB内の日付に文字列から日付を変換するためのスコープを持っているかどうかです。

0

SELECT STR_TO_DATE(フィールド、 '%のM /%D /%Y') STR_TO_DATE BYテーブルORDER(フィールド、 '%のM /%D /%Y')

0

FROMあなたがソートしたい場合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)); 
    } 
?> 
関連する問題