首页 > 解决方案 > Java:日期字符串到小时

问题描述

我有这个日期字符串2020-07-26T20:08:27Z,我想执行日期比较。

那么这个操作是否有任何框架/工具。

String s1 = "2020-07-26T20:08:27Z";
String s2 = "2020-07-26T21:08:27Z";

在上面的示例代码中,我想找到更大的日期

标签: javajava-8date

解决方案


tl;博士

Instant
.parse( "2020-07-26T20:08:27Z" ) 
.isBefore(
    Instant.parse( "2020-07-26T21:08:27Z" )
)

真的

java.time

使用Java 8 及更高版本中内置的现代java.time类。

ISO 8601

Z输入末尾的 表示与 UTC 的偏移为零时分秒,或UTC本身。Z发音为“祖鲁语” 。

您的输入字符串采用标准ISO 8601格式。java.time类在解析/生成字符串时默认使用这些格式。所以不需要指定格式模式。

Instant

一个Instant对象代表 UTC 中的一个时刻。

Instant instantA = Instant.parse( "2020-07-26T20:08:27Z" ) ;
Instant instantB = Instant.parse( "2020-07-26T21:08:27Z" ) ;

比较使用equals, isBefore, isAfter.

boolean aBeforeB = instantA.isBefore( instantB ) ;

Duration

您可以将两个时刻之间经过的时间捕获为一个Duration对象。

Duration d = Duration.between( instantA , instantB ) ;

您可以询问Duration对象是零还是负数。


Java 中所有日期时间类型的表,包括现代和传统


推荐阅读