Rob*_*bin 13 java datetime java-8 java-time
我有两个Instant类的实例,java.time例如:
Instant instant1 = Instant.now();
Instant instant2 = Instant.now().plus(5, ChronoUnit.HOURS);
Run Code Online (Sandbox Code Playgroud)
现在我想检查两个实例Instant是否实际上在同一天(日,月和年匹配).我想,让我们只使用闪亮的新的LocalDate和通用的from静态方法:
LocalDate localdate1 = LocalDate.from(instant1);
LocalDate localdate2 = LocalDate.from(instant2);
if (localdate1.equals(localdate2)) {
// All the awesome
}
Run Code Online (Sandbox Code Playgroud)
除了通用from方法不是那么普遍,Java在运行时抱怨异常:
java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 2014-11-04T18:18:12Z of type java.time.Instant
Run Code Online (Sandbox Code Playgroud)
这让我回到了1号广场.
如果两个实例Instant具有相同的日期(具有相同的日,月和年),建议/最快的方法是什么?
flo*_*flo 16
Instant类不适用于人类时间单位,例如年,月或日.如果要以这些单位执行计算,可以通过将Instant与时区绑定,将Instant转换为另一个类,例如LocalDateTime或ZonedDateTime.然后,您可以按所需的单位访问该值.
http://docs.oracle.com/javase/tutorial/datetime/iso/instant.html
因此我建议使用以下代码:
LocalDate ld1 = LocalDateTime.ofInstant(instant1, ZoneId.systemDefault()).toLocalDate();
LocalDate ld2 = LocalDateTime.ofInstant(instant2, ZoneId.systemDefault()).toLocalDate();
if (ld1.isEqual(ld2)) {
System.out.println("blubb");
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用
instant.atOffset(ZoneOffset.UTC).toLocalDate();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7945 次 |
| 最近记录: |