2013-03-05 55 views
2

排序所以,我有一个看似不那么聪明的问题,但在这里不用,日期时间SQLite中

10:00pm to 11:00pm 

在上面的格式从服务器返回的日期时间。

我想能够对其进行排序,但使用ORDER BY ASC似乎不起作用。它适用于iPhone,但不适用于Android。

是否因为SQLite数据库版本?

如何排序时间?

回答

6

显示的内容不是日期时间,而是时间间隔。

该值是一个字符串,字符串按字典顺序进行比较。 为了确保您的字符串正确排序,所有字段必须始终具有相同的长度(如果不是,9:00将被排序10:00;使用09:00代替)。 此外,AM/PM后缀在一天中的第一个小时内不能正确排序;改用普通的24小时制。

0

也许它是因为SQLite,但尝试存储秒的时间,如果你排序sec它将工作。 EX 1:05 = 65秒。 编辑:如果你想显示在查看时间,只需将其转换回H:M:S 我认为这将是对你最简单的方法;)

0

你可以做一件事之前,在转换数据库存储日期变为milis。然后你可以从中得到排序的列表。然后获得排序结果后,您可以再次将它们转换为日期。

对于转换,您可以使用SimpleDateFormat类。示例代码可以在doc中找到,或者您可以看到很多示例

0

您可以通过使用时间戳整理日期:像: “YY MM DD HH:MM一” //这里你的情况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存储到您的数据库中,或者您可以将dateinSimpleFormat Date存储到数据库中。

这一切后,你可以直接像简单的查询,对其进行排序: SELECT * FROM表名ORDER BY Column_Date ASC