tl;dr
LocalTime
.now()
.isAfter(
LocalTime.parse( "15:30" )
)
Details
你应该换个角度思考:如何将该字符串转换为时间值。您不会通过将数字转换为字符串来尝试数学。日期时间值也是如此。
避免使用旧的捆绑类 java.util.Date 和 .Calendar,因为它们非常麻烦,并且在设计和实现方面都有缺陷。他们被新的取代java.time包 in Java 8。 java.time 的灵感来自于乔达时间.
Both java.time and 乔达时间提供一个类来捕获一天中的时间,而无需任何日期到时区:LocalTime
.
java.time
使用 Java 内置的 java.time 类,特别是LocalTime。获取您当地时区的当前时间。根据您的输入字符串构造一个时间。与isBefore
, isAfter
, or isEqual
方法。
LocalTime now = LocalTime.now();
LocalTime limit = LocalTime.parse( "15:30" );
Boolean isLate = now.isAfter( limit );
最好指定您想要的/预期的时区,而不是隐式依赖 JVM 当前的默认时区。
ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
LocalTime now = LocalTime.now( z ); // Explicitly specify the desired/expected time zone.
LocalTime limit = LocalTime.parse( "15:30" );
Boolean isLate = now.isAfter( limit );
乔达时间
本例中使用 Joda-Time 库的代码恰好与上面看到的 java.time 代码几乎相同。
请注意乔达时间项目现已在维护模式,团队建议迁移到java.time类。
关于 java.time
The java.time框架内置于 Java 8 及更高版本中。这些课程取代了麻烦的旧课程legacy日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat.
The 乔达时间项目,现在在维护模式,建议迁移到java.time类。
要了解更多信息,请参阅甲骨文教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310.
从哪里获取 java.time 类?
-
Java SE 8, Java SE 9, 然后
- 内置。
- 具有捆绑实现的标准 Java API 的一部分。
- Java 9 添加了一些小功能和修复。
-
Java SE 6 and Java SE 7
- 许多 java.time 功能都向后移植到 Java 6 和 7三十后端口.
- Android
- The 三十ABP项目适应三十后端口(如上所述)专门针对 Android。
- See 如何使用 ThreeTenABP....
The 三十额外项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval, YearWeek, YearQuarter, and more.