如何在Android或Java中对从当前日期到旧日期的日期进行排序?

我需要用户定义的function,可以将日期从当前时间排序到旧时间。

我有10个日期的列表,我想从上次最近的日期开始对这些日期进行排序。

目前我有一个逻辑,如果我们可以用毫秒来转换日期,那么将它与当前毫秒相比较,最小毫秒将是最近的日期。 那是,

CURRENT_MILLI_SECOND - A_DATE_CONVERTED_TO_MILLI_SECONDS = MILLI-SECONDS 

请建议我,如果有人可以帮助我这个逻辑或任何其他逻辑… !!!

这是我从服务器获得的结果:

 Thu Dec 27 11:02:43 GMT+05:30 2012 

您可以使用Comparator并使用compare()对数据进行排序

 Collections.sort(dateList, new Comparator(){ public int compare(Date date1, Date date2){ return date1.after(date2); } }); 

尝试这个:

  Comparator date_comparator = new Comparator() { @Override public int compare(Date date1, Date date2){ return date1.compareTo(date2); } }; 

您可以使用CalendarDate类来执行此操作。 使用日历和日期,您可以比较两个日期,如date1.compare(date2)date.before(date2)date1.after(date2)这样的api可用于您的情况。

Java中的Date和Calendar类已经有一个很好的API来比较日期。

您可以使用它来编写自己的函数来排序日期。

你可以参考这个链接 。

TL;博士

 Collections.reverse( new ArrayList<>().add( OffsetDateTime.parse( "Thu Dec 27 11:02:43 GMT+05:30 2012" , DateTimeFormatter.ofPattern( "EEE MMM d HH:mm:ss OOOO uuuu" , Locale.US ) ) ) ) 

java.time

现代方法使用java.time类。

定义要匹配的格式模式。 顺便说一句,这是一种可怕的格式; 如果您有任何控制,请使用标准ISO 8601格式。

 String input = "Thu Dec 27 11:02:43 GMT+05:30 2012" ; DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM d HH:mm:ss OOOO uuuu" , Locale.US ); 

您的输入字符串指定从UTC的偏移量而不是全时区域。 所以我们解析为OffsetDateTime

 OffsetDateTime odt = OffsetDateTime.parse( input , f ); 

odt.toString():2012-12-27T11:02:43 + 05:30

OffsetDateTime对象已经知道如何对自己进行排序 ,因为它们实现了Comparable

 List< OffsetDateTime > odts = new ArrayList<>( 3 ) ; odts.add( odt ) ; odts.add( odt.plusMinutes( 7 ) ) ; odts.add( odt.minusMinutes( 21 ) ) ; Collections.sort( odts ) ; 

您希望列表顶部有最新的,因此按相反的顺序排序 。

 Collections.reverse( odts ) ; // Reverse-order. 

要比较单个java.time对象,请调用isBeforeisAfterisEqual / equals方法。

 thisOdt.isBefore( thatOdt ) 

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧遗留日期时间类,如java.util.DateCalendarSimpleDateFormat

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程 。 并搜索Stack Overflow以获取许多示例和解释。 规范是JSR 310 。

从哪里获取java.time类?

  • Java SE 8Java SE 9及更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小function和修复。
  • Java SE 6Java SE 7
    • 许多java.timefunction都被反向移植到ThreeTen-Backport中的 Java 6和7。
  • Android的
    • 更高版本的Android捆绑java.time(JSR 310)类的实现。
    • 对于早期的Android, ThreeTenABP项目采用ThreeTen-Backport (如上所述)。 请参见如何使用ThreeTenABP ….