java.time
DateTimeFormatter firstFormatteer
= DateTimeFormatter.ofPattern("d MMM uuuu H:mm:ss z", Locale.ENGLISH);
String firstDateString = "11 May 2018 21:03:51 GMT";
String secondDateString = "2018-05-11T21:03:51Z";
Instant firstInstant = firstFormatteer.parse(firstDateString, Instant::from);
Instant seoncdInstant = Instant.parse(secondDateString);
System.out.println("The strings are parsed into " + firstInstant + " and " + seoncdInstant);
输出是:
字符串被解析为 2018-05-11T21:03:51Z 和 2018-05-11T21:03:51Z
您来自两个服务的字符串有两种不同的格式,您能做的最好的事情就是以两种不同的方式处理它们。首先,定义一个匹配格式的格式化程序。第二个是 ISO 8601 格式。Instant
解析这种格式没有任何明确的格式化程序,所以这里我们不需要定义一个。
比较做例如:
if (firstInstant.isBefore(seoncdInstant)) {
System.out.println("The first date and time comes first");
} else if (firstInstant.equals(seoncdInstant)) {
System.out.println("The date and time is the same");
}
日期和时间相同
Instant
班级是班级的现代替代品,Date
它代表了一个时刻。
这Date
门课设计得很糟糕,而且出SimpleDateFormat
了名的麻烦,幸运的是它们都已经过时了。我建议您避免使用它们并改用现代 Java 日期和时间 API java.time。
链接: Oracle 教程:解释如何使用 java.time 的日期时间。