Java Ormlite:如何按数据类型为字符串的日期排序?sort在哪里会将其视为日期而不是字符串?

Java Ormlite:如何按数据类型为字符串的日期排序?sort在哪里会将其视为日期而不是字符串?,java,android,sql,ormlite,Java,Android,Sql,Ormlite,我有这个: @DatabaseField(columnName = "DATE_TRAVEL", dataType = DataType.DATE_STRING, format = "dd-MM-yyyy") public Date dateTravel; 当我用这个的时候 Where<RoadTravelTableFile, Integer> queryBuilder = getHelper() .getRoadTravelTab

我有这个:

 @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));
其中queryBuilder=getHelper()
.getRoadTravelTableFileIntegerDao()。
queryBuilder().orderBy(“DATE\u TRAVEL”,false).where().eq(“main\u id”,Integer.parseInt(s));
结果是

30-09-14

16-11-14

12-10-14

12-09-15

09-10-14


它对它进行了排序,但它认为它是一个字符串。。有办法吗?

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

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

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

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

试试这种方法,希望这能帮助你解决问题。

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());
类StringAsDateComparator实现Comparator
{
SimpleDateFormat=新的SimpleDateFormat(“dd-MM-yyyy”);
公共整数比较(字符串lhs、字符串rhs)
{
return dateFormat.parse(lhs).compareTo(format.parse(rhs));
}
}
sort(list,new StringDateComparator());

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

尝试这种方法,希望这将帮助您解决问题。

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());
类StringAsDateComparator实现Comparator
{
SimpleDateFormat=新的SimpleDateFormat(“dd-MM-yyyy”);
公共整数比较(字符串lhs、字符串rhs)
{
return dateFormat.parse(lhs).compareTo(format.parse(rhs));
}
}
sort(list,new StringDateComparator());

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

好的,一个想法是使用“yyy-MM-dd”这将起作用,但这里的本地格式是dd-mm-yyyy。@ElliottFrisch我已经按照您的建议做了,只需使用区域设置转换代码将其传输回dd-mm-yyyy即可。干杯。好的,一个想法是使用“yyyy-MM-dd”,这会起作用,但这里的本地格式是dd-MM-yyyy。@ElliottFrisch我已经按照你的建议做了,只需使用区域设置转换代码将其传输回dd-MM-yyyy。干杯。我将我的ormlite查询转换为光标。所以我不能在我的场景中使用它。我将我的ormlite查询转换为游标。所以我不能在我的场景中使用它。我将我的ormlite查询转换为游标。所以我不能在我的场景中使用它。我将我的ormlite查询转换为游标。所以我不能在我的场景中使用这个。