【发布时间】:2013-03-05 00:16:34
【问题描述】:
所以我有一个看似不那么聪明的问题,但这里是,
10:00pm to 11:00pm
以上述格式从服务器返回一个日期时间。
我希望能够对其进行排序,但使用ORDER BY ASC 似乎不起作用。它适用于 iPhone,但不适用于 Android。
是因为 SQLite 数据库版本的原因吗?
如何对时间进行排序?
【问题讨论】:
所以我有一个看似不那么聪明的问题,但这里是,
10:00pm to 11:00pm
以上述格式从服务器返回一个日期时间。
我希望能够对其进行排序,但使用ORDER BY ASC 似乎不起作用。它适用于 iPhone,但不适用于 Android。
是因为 SQLite 数据库版本的原因吗?
如何对时间进行排序?
【问题讨论】:
你显示的不是日期时间,而是时间间隔。
这个值是一个字符串,字符串是按字典顺序比较的。
为了确保您的字符串正确排序,所有字段必须始终具有相同的长度(如果不是,9:00 将在10:00 之后进行排序;请改用09:00)。
此外,AM/PM 后缀在一天的第一个小时没有正确排序;请改用普通的 24 小时格式。
【讨论】:
可能是因为 SQLite,但尝试以秒为单位存储时间,如果您对秒进行排序,它将起作用。 EX 1:05 = 65 秒。 编辑:如果要在视图中显示时间,只需将其转换回 h:m:s 我认为这对你来说是最简单的方法;)
【讨论】:
您可以做一件事,在存储到数据库之前将日期转换为 milis。然后你可以从中得到排序列表。然后在得到排序结果后,您可以再次将它们转换为日期。
对于转换,您可以使用 SimpleDateFormat 类。示例代码可以在doc 中找到,或者您可以在那里看到很多示例
【讨论】:
您可以使用时间戳对日期进行排序:例如:“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 秒存储到您的数据库中,或者您可以简单地将 dateinSimpleFormat 日期存储到您的数据库中。
毕竟,您可以通过简单的查询直接对其进行排序,例如: SELECT * From Table_Name ORDER BY Column_Date ASC
【讨论】: