我正在尝试通过增加列表视图上的日期来对数据进行排序。
根据用户的设置,保存日期如下
DD.MM.YYYY
或MMM DD, YYYY
。现在,订单设置为“日期ASC”。
Cursor cursor = getContentResolver().query(EventEntry.CONTENT_URI,
projection, null, null, "date ASC");
当我按升序排序时,2019年7月26日将显示在2019年3月31日之上,尽管稍后显示。在美国格式中,排序始终无法进行,例如,Apr始终显示在任何其他月份的上方。我想同时支持两种日期格式,以提供更好的用户体验。
有没有办法以正确的顺序对游标或数据库中的日期进行排序?
答案 0 :(得分:2)
这会将YYYYMMDD
参数中的日期格式更改为order by
:
Cursor cursor = getContentResolver().query(
EventEntry.CONTENT_URI,
projection, null, null,
"substr(date, 7) || substr(date, 4, 2) || substr(date, 1, 2) ASC");
但是日期比较的问题仍然存在。
最好的办法是将日期格式更改为YYYY-MM-DD
或将日期存储为整数(纪元)。
答案 1 :(得分:0)
尝试在排序之前将日期转换为时间戳。
Cursor cursor = getContentResolver().query(EventEntry.CONTENT_URI,
projection, null, null, "strftime('%s', date) ASC");