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 对象已经知道如何使用sort themselves,因为它们实现了Comparable。
List< OffsetDateTime > odts = new ArrayList<>( 3 ) ;
odts.add( odt ) ;
odts.add( odt.plusMinutes( 7 ) ) ;
odts.add( odt.minusMinutes( 21 ) ) ;
Collections.sort( odts ) ;
您希望最新的在列表顶部,所以sort in reverse order。
Collections.reverse( odts ) ; // Reverse-order.
要比较单个 java.time 对象,请调用 isBefore、isAfter 和 isEqual/equals 方法。
thisOdt.isBefore( thatOdt )
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
从哪里获得 java.time 类?