Ormlite:如何通过数据类型= String的日期排序? sort会将它视为日期而不是字符串?

时间:2014-10-13 02:14:59

标签: java android sql ormlite

我有这个:

 @DatabaseField(columnName = "DATE_TRAVEL", dataType = DataType.DATE_STRING,
        format = "dd-MM-yyyy")
public Date dateTravel;

当我使用这个

    Where<RoadTravelTableFile, Integer> queryBuilder = getHelper()
            .getRoadTravelTableFileIntegerDao().
                    queryBuilder().orderBy("DATE_TRAVEL",false).where().eq("main_id", Integer.parseInt(s));

结果是

30-09-14

16-11-14

14年12月10日

15年12月9日

14年9月10日

它排序但是,它认为它是一个字符串..有这个方法吗?

2 个答案:

答案 0 :(得分:3)

请尝试这种方式,希望这有助于您解决问题。

class StringAsDateComparator implements Comparator<String>
{
    SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
    public int compare(String lhs, String rhs)
    {
        return dateFormat.parse(lhs).compareTo(format.parse(rhs));
    }
}

Collections.sort(list, new StringDateComparator());

尝试实现一个Comparator对象,在比较它们之前将字符串转换为日期,SimpleDateFormat对象将执行转换。

答案 1 :(得分:1)

您可以获取数据,然后保存到列表中,并使用下面的代码将您的日期(字符串)解析为毫秒,然后对其进行排序并显示。

Date date = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH).parse(input);
long milliseconds = date.getTime();