tl;博士
LocalDate ld1 = LocalDate.parse( "01/01/2014" , DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ) ;
LocalDate ld2 = LocalDate.parse( "15/03/2014" , DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ) ;
LocalDate ld3 = LocalDate.of( 2014 , Month.JULY , 1 ) ;
Boolean isFirstDateBeforeSecondDate = ld1.isBefore( ld2 ) ;
Boolean isThirdDateBeforeSecondDate = ld3.isBefore( ld2 ) ;
Boolean result = ( isFirstDateBeforeSecondDate && isThirdDateBeforeSecondDate ) ;
return result ;
使用 java.time
现代方法使用 java.time 类,而不是麻烦的旧旧日期时间类(Date、Calendar 等)。
LocalDate 类表示没有时间和时区的仅日期值。
使用DateTimeFormatter 类定义格式模式以匹配您的输入字符串。
String input = "15/03/2014" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( input , f );
ld.toString(): 2014-03-15
要指定固定日期,请传递 year、month 和 dayOfMonth。对于月份,您可以指定一个数字,1-12 月的编号为 1-12(与传统课程中疯狂的 0-11 不同!)。或者您可以选择使用Month 枚举对象。
LocalDate firstOf2014 = LocalDate.of( 2014 , Month.JANUARY , 1 );
使用isBefore、isEqual 或isAfter 方法进行比较。
Boolean isInputDateBeforeFixedDate = ld.isBefore( firstOf2014 ) ;
isInputDateBeforeFixedDate.toString(): false
ISO 8601
如果可能,请将您的特定日期字符串格式替换为标准 ISO 8601 格式。该标准为日期时间值定义了许多有用的实用明确字符串格式。
java.time 类在解析/生成字符串时默认使用标准格式。您可以在上面的代码中看到示例。对于仅日期值,标准格式为 YYYY-MM-DD。
关于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 类?
ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如Interval、YearWeek、YearQuarter 和more。