String dateInString = "2016-09-18T12:17:21:000Z";
Instant instant = Instant.parse(dateInString);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Europe/Kiev"));
System.out.println(zonedDateTime);
String dateInString = "2016-09-18T12:17:21.000Z";
那么,问题是如何用instant
和DateTimeFormatter
解析日期?
“问题”是毫秒前的冒号,这是非标准的(标准是小数点)。
要使其工作,必须为您的自定义格式生成自定义DateTimeFormatter
:
String dateInString = "2016-09-18T12:17:21:000Z";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_DATE_TIME)
.appendLiteral(':')
.appendFraction(ChronoField.MILLI_OF_SECOND, 3, 3, false)
.appendLiteral('Z')
.toFormatter();
LocalDateTime instant = LocalDateTime.parse(dateInString, formatter);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Europe/Kiev"));
System.out.println(zonedDateTime);
此代码的输出:
2016-09-18T12:17:21+03:00[Europe/Kiev]
如果您的datetime文字有一个点而不是最后一个冒号,事情会简单得多。
我正在开发新闻应用程序,我已经将从现在到那个日期的运行时间进行了转换,但当我运行代码时,我的适配器类中出现了以下异常 JAVA时间总体安排DateTimeParseException:无法在索引0处分析文本“09/10/2019”,无法在索引19处找到未分析的文本 低于我的适配器类 以下是JSON响应:
我使用Java8来解析日期并找出两个日期之间的差异。 以下是我的片段: 当我运行时,我得到了错误: java.time.format.DateTimeParseException:无法在索引3解析文本
下面是我的字符串:convertdate:'2016-08-18 14:27:15.103+02' 和我的代码: 我想不是太复杂,买我看不出错误。字符串中的+02可能是原因吗?
我正在尝试解析这样的日期: 该日期是来自远程服务的响应。我并不是真的期望Z,我也不是真的需要它,所以我想知道处理这个案件的正确方法是什么。
我对Java Spring的ExceptionHandler有一个问题。我有一个名为EntityNotFoundException的异常,我希望在引发异常时从REST控制器调用ExceptionHandler方法。 这是我的REST控制器方法代码: 这是我的异常处理程序代码: } 我不知道为什么,当我获得DataIntegrityViolationException时,会调用ExceptionHa