【发布时间】:2021-04-27 13:36:04
【问题描述】:
我的源日期类型是EEE MMM dd HH:mm:ss zzz yyyy。例如,Sat Dec 12 00:00:00 KST 2020 但我的目标日期类型是 Java 日期类型,格式为 yyyy-MM-dd。所以我制作了将Java String类型EEE MMM dd HH:mm:ss zzz yyyy转换为java util对象的方法。
private static Date getDate(String beforeDate) throws Exception{
SimpleDateFormat readFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date rdate = readFormat.parse(beforeDate);
SimpleDateFormat writeFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
String format = writeFormat.format(rdate);
System.out.println(format);
return writeFormat.parse(format);
}
System.out.println(format) 行打印出我期望的正确值。
2020-12-12
2020-12-12
2013-01-01
但是返回值的类型是错误的。该方法的返回值似乎没有受到影响。
System.out.println(getDate("Sat Dec 12 00:00:00 KST 2020"));
上面的行再次打印Sat Dec 12 00:00:00 KST 2020。我不知道在转换 Java 日期类型时哪些代码是错误的。
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的ZonedDateTime和DateTimeFormatter。 -
鉴于您想要该输出,您可以转换为
LocalDate。它像2020-12-12一样打印(总是)。