使用Java 8的给出日期(UTC日期)和当前日期之间的差异(天)

西亚加拉詹·拉马纳森(Thiagarajan Ramanathan)

我的方法的输入将是一个String包含UTC日期的日期。我需要将输入日期与当前日期和时间进行比较,并检查两个日期之间的差异。结果应该是几天。

我尝试了以下方法,但均未成功。

String dateString = "2019-06-18T16:23:41.575 UTC";
final DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS 'UTC'").withZone(ZoneId.of("UTC"));
OffsetDateTime parsedDate  = OffsetDateTime.parse(dateString, formatter1);
System.out.println("======================:"+parsedDate.format(formatter1));


OffsetDateTime currentUTC = OffsetDateTime.now(ZoneOffset.UTC);
System.out.println("Until (with crono): " + parsedDate.until(currentUTC, ChronoUnit.DAYS));

我需要一个结果int(即天数)。

该行OffsetDateTime parsedDate = OffsetDateTime.parse(dateString, formatter1);使用以下堆栈跟踪引发异常:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2019-06-18T16:23:41.575 UTC' could not be parsed: Unable to obtain OffsetDateTime from TemporalAccessor: {InstantSeconds=1560875021},ISO,UTC resolved to 2019-06-18T16:23:41.575 of type java.time.format.Parsed
    at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1959)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1894)
    at java.base/java.time.OffsetDateTime.parse(OffsetDateTime.java:402)
    at thiagarajanramanathan.misc.App.main(App.java:86)
Caused by: java.time.DateTimeException: Unable to obtain OffsetDateTime from TemporalAccessor: {InstantSeconds=1560875021},ISO,UTC resolved to 2019-06-18T16:23:41.575 of type java.time.format.Parsed
    at java.base/java.time.OffsetDateTime.from(OffsetDateTime.java:370)
    at java.base/java.time.format.Parsed.query(Parsed.java:235)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1890)
    ... 3 more
Caused by: java.time.DateTimeException: Unable to obtain ZoneOffset from TemporalAccessor: {InstantSeconds=1560875021},ISO,UTC resolved to 2019-06-18T16:23:41.575 of type java.time.format.Parsed
    at java.base/java.time.ZoneOffset.from(ZoneOffset.java:348)
    at java.base/java.time.OffsetDateTime.from(OffsetDateTime.java:359)
    ... 5 more
AntiqTech:

从该线程可以看到:无法从TemporalAccessor获取OffsetDateTime,
我更改了以下几行:

//OffsetDateTime parsedDate  = OffsetDateTime.parse(dateString, formatter1);
ZonedDateTime parsedDate = ZonedDateTime.parse(dateString, formatter1);

使用此修改运行您的代码时,我可以获得以下结果

适用于“ 2019-06-18T16:23:41.575 UTC”:

======================:2019-06-17T16:23:41.575 UTC
Until (with crono): 0

由于不到24小时,因此返回0

对于“ 2019-06-17T16:23:41.575 UTC”:

======================:2019-06-17T16:23:41.575 UTC
Until (with crono): 1

同样,由于超过24小时但不到2天,因此返回1。

我想这就是你想要的。请尝试一下,让我知道这是否适合您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用php在mongodb中查找当前日期是否在开始日期和结束日期之间的数据

如何使用Java计算数据库与当前日期之间的天数差异

如何使用Java中的UTC或GMT获取当前日期和时间?

使用datetime-picker AngularJs计算选定日期和当前日期之间的天数

使用awk和日期获取当前日期

如何从Java中的当前日期减去n天?

如何使用SQL Server从当前日期减去30天

Java如何使用当前日期和时间保存文件

Java:生成一个介于范围(从当前日期/时间开始到将来的随机日期(例如从当前日期/时间开始的5-10天)之间的范围)之间的随机日期

日期大于或小于使用 java8 功能的 java 中的当前日期

在Java中存储当前日期和从当前日期开始的1年

使用SQL在Java中将日期与当前日期进行比较

使用JAVA生成大于当前日期的随机日期

jQuery UI DateTimePicker向当前日期添加3天,并使用dp.change方法在datePickerStart和datePickerEnd日期中禁用将来的日期

无法使用Jodatime从Java中的当前日期中扣除一天

在java中获取以天为单位的日期之间的差异

使用日期从-日期到时从当前日期获取预订

Java 中的当前日期和时间

动态节头RecyclerView使用当前日期和时间

如何使用离子显示当前日期和时间

使用JS在<canvas>中显示当前日期和时间

使用 QUERY 或 VLOOKUP 查找当前日期和时间

使用当前日期和时间戳记的时差“分钟”

使用JSP和Servlet显示当前日期

如何使用reactJS打印当前日期和时间

在java中获取日期字符串与当前日期之间的时间差

用Java打印当前日期

用Java生成当前日期戳

JAVA中的程序,用于从出生日期和当前日期开始计算年龄