如何转换日期 class 以正确解析日期时间?

How do I convert date class to parse date time correctly?

我是 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。我该如何解决这个问题?

936000 中删除 000。日期解析器将其视为 936,000 毫秒,即向您的 date/time.

添加 936 秒或大约 15 分钟

像这样尝试。但是使用 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