だから私は一見それほど賢くない質問がありますが、ここに行きます、
10:00pm to 11:00pm
上記の形式でサーバーから日時を返します。
並べ替えがしたいのですが、ORDER BY ASC
うまくいかないようです。iPhoneでは動作しますが、Androidでは動作しません。
SQLiteデータベースのバージョンが原因ですか?
時間を並べ替えるにはどうすればよいですか?
表示するのは日時ではなく、時間間隔です。
この値は文字列であり、文字列は辞書式に比較されます。文字列が正しくソートされるようにするには、すべてのフィールドが常に同じ長さである必要があります(そうでない場合は、後9:00
にソートされます。代わりに使用してください)。さらに、/サフィックスは1日の最初の1時間は正しくソートされません。代わりに、プレーンな24時間形式を使用してください。 10:00
09:00
AM
PM
タイムスタンプを使用して日付を並べ替えることができます:Like: "yy MM dd hh:mm a" //ここではhh:mma
時間を次のような単純な日付形式に変換します。
DateFormat simpleDateFordate = new SimpleDateFormat("yy MM dd");
Calendar calender = Calendar.getInstance();
String date = simpleDateFordate.format(calender.getTime());
System.out.println("date>>>>" + date);
String time = "10:00pm";
String stringDate = date + " " + time;
DateFormat dateFormatdatewithTime = new SimpleDateFormat(
"yy MM dd hh:mma");
Date dateinMili;
try {
dateinMili = dateFormatdatewithTime.parse(stringDate);
String dateFinal = dateFormatdatewithTime.format(dateinMili.getTime());
System.out.println("Final Date time>>>>"+dateFinal);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Mili Secondsをデータベースに保存するか、dateinSimpleFormatDateをデータベースに保存するだけです。
この後、次のような単純なクエリで直接並べ替えることができます。SELECT * From Table_Name ORDER BY Column_Date ASC
SQLiteが原因かもしれませんが、時間を秒単位で保存してみてください。秒で並べ替えると機能します。例1:05=65秒 編集:時間を表示したい場合は、h:m:sに戻すだけです。これが最も簡単な方法だと思います;)
あなたは一つのことをすることができます、データベースに保存する前に日付をミリスに変換してください。次に、そこからソートされたリストを取得できます。次に、ソートされた結果を取得した後、それらを再び日付に変換できます。
変換には、SimpleDateFormatクラスを使用できます。サンプルコードはドキュメントにあります。または、そこにたくさんの例があります。