如何将日期类正确地转换为解析日期时间?

22 浏览
0 Comments

如何将日期类正确地转换为解析日期时间?

这个问题已经有了答案:

无法将ISO 8601格式的字符串解析为Java8日期,偏移量缺少冒号

如何使用LocalDateTime解析/格式化日期?(Java 8)

我非常新手 Java。

我从Oracle数据库中取出了这个日期 1995-01-28T17:02:12.936000-0500,现在我想将其转换为 yyyy-MM-dd HH:mm:ss 格式。我已经尝试了下面的方法。

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
Date c=sdf.parse("1995-01-28T17:02:12.936000-0500");
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf1.format(c));

我得到的输出是

1995-2-28 17:17:48

你可以看到17:02:12被更改为17:17:48。我该怎么办?

admin 更改状态以发布 2023年5月25日
0
0 Comments

936000中的000去掉。日期解析器会将其视为936,000毫秒,这会导致您的日期/时间增加936秒,约15分钟。

0
0 Comments

尝试这样操作。但使用java.time包中的方法。这个包在很多方面都比过时的java.util.Date和其中许多被弃用的方法都要优越。

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ");
OffsetDateTime odt = OffsetDateTime.parse("1995-01-28T17:02:12.936000-0500",dtf);
DateTimeFormatter resultFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(odt.format(resultFormat));

输出

1995-01-28 17:02:12

0