may*_*rma 4 java comparison datetime
我有一个像"15:30"的时间字符串我想将该字符串与当前时间进行比较.请提出一些简单的建议 以及如何以小时分钟格式获取当前时间("HH:mm")
LocalTime.now()
.isAfter( LocalTime.parse( "15:30" ) )
Run Code Online (Sandbox Code Playgroud)
您应该反过来考虑:如何将该字符串转换为时间值.您不会通过将数字转换为字符串来尝试数学.日期时间值也是如此.
避免使用旧的捆绑类java.util.Date和.Calendar,因为它们在设计和实现方面都非常麻烦,存在缺陷.他们被新取代java.time包中的Java 8.而java.time的灵感来自于Joda-Time.
无论java.time和乔达时间提供了一个类来捕获时间的天,没有任何日期的时区:LocalTime
.
具体来说,使用Java内置的java.time类LocalTime
.获取当地时区的当前时间.根据输入字符串构造一个时间.与比较isBefore
,isAfter
或isEqual
方法.
LocalTime now = LocalTime.now();
LocalTime limit = LocalTime.parse( "15:30" );
Boolean isLate = now.isAfter( limit );
Run Code Online (Sandbox Code Playgroud)
最好指定所需/预期的时区,而不是隐式依赖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 );
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用Joda-Time库的代码几乎与上面针对java.time看到的代码相同.
请注意,Joda-Time项目现在处于维护模式,团队建议迁移到java.time类.
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval
,YearWeek
,YearQuarter
,和更多.
只需比较正常的字符串,如下所示:
String currentTime = new SimpleDateFormat("HH:mm").format(new Date());
String timeToCompare = "15:30";
boolean x = currentTime.equals(timeToCompare);
Run Code Online (Sandbox Code Playgroud)
如果时间是相同的x,true
如果它们不是x将是false
归档时间: |
|
查看次数: |
31403 次 |
最近记录: |