为了使用junit进行比较,我必须转换日期。我从数据库中得到一个日期,即“ 06/25/2021 10:26:33.0 ”,我必须将其转换为“ 2021-06-25T10:26:33.000-04:00 ”,然后才能在断言中使用它。
我试图不在 java 中使用 SimpleDate,而是使用内置的 java.time。但是,我认为我并没有真正理解其中的所有内容。这是我一直在玩的代码片段。我已经尝试了很多事情,当解析发生时我总是得到一个错误。
public String test() throws ParseException {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
LocalDateTime ldt = LocalDateTime.parse("06/25/2021 10:26:33.0", dtf);
//After the above line I have a date like: 2021-06-25T10:26:33.0
ZoneId zone = ZoneId.of("UTC-04:00");
ZonedDateTime zdt = ldt.atZone(zone);
Instant instant = zdt.toInstant();
return instant.toString();
}
在我看来,我认为我必须首先将日期转换为“可接受”格式,因为我觉得这种字符串格式 - “yyyy-MM-dd HH:mm:ss.S”不是 java.time可以处理。它给了我一个错误,例如“无法在索引 19 处解析文本”,然后可能在第二遍中将其转换为“2021-06-25T10:26:33.000-04:00”。
我已经在 SO 上查阅了几篇关于此的文章,但无法找到有助于转换自定义格式的内容。我知道“解析”和“格式”是必须在此处使用的 2 个 API 方法,但不知道如何去做。有人可以将我推向正确的方向吗?