使用本地从远程源转移日期

时间:2015-10-06 15:27:01

标签: java java-8 java-time

从远程资源接收数据

2 个答案:

答案 0 :(得分:2)

一个字符串!=一个日期时间

您正在将日期时间值与其格式化的字符串表示形式混淆。您需要将输入字符串解析为日期时间对象。然后生成另一个日期时间对象来表示“现在”。通过调用isBeforeisAfter方法比较这两个对象。

同样,不要将格式化的字符串$12.34与数字混淆。你会如何将它与另一个数字进行比较?您可以将输入字符串解析为数字对象,执行业务逻辑,最后生成结果的String表示形式以显示给用户。同上日期工作。

不要担心转移时区。任何InstantZonedDateTime对都可以通过isBeforeisAfter进行比较,无论时区如何。

我不会显示任何代码,因为这个问题实际上是数百个其他问题的重复。请搜索StackOverflow以了解更多信息。搜索单词“java date parse”和“java date compare”。专注于涉及“java.time”或“Java 8”的答案。

答案 1 :(得分:2)

您的格式字符串与您的示例输入不匹配。要匹配输入,您的格式字符串应为"yyyy-MM-dd HH:mm:ss VV"

正如@JonSkeet和@BasilBourque建议的那样,您应该从输入字符串中解析InstantZonedDateTime。我没有看到在SO上解析Instant解决问题的问题,所以这就是你如何做到的:

// may want to declare and maintain this elsewhere
DateTimeFormatter remoteFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss VV");

Instant remote = remoteFormat.parse(s, Instant::from); 

boolean remoteInThePast = Instant.now().isAfter(remote);