如何将日期转换为另一个日期作为Java中的字符串?



我想把一种日期格式转换成另一种日期格式。例如,我有这个字符串"05-Apr-23"我想把它转换成字符串"05/04/23"。我做了这个实现,但它不起作用。

String oldDate = "05-Apr-23";
SimpleDateFormat sdf = new SimpleDateFormat("dd-mmm-yy");
Date dt = null;
try {
dt = sdf.parse(oldDate);
} catch (ParseException e) {
throw new CustomInternalServerException(oldDate + "is not a valid date");
}
SimpleDateFormat sdf1 = new SimpleDateFormat("dd/mm/yy");
return sdf1.format(dt);

我得到异常ParseException: UnparseableDate: "05-Apr-23"。任何反馈将不胜感激!谢谢你!

你只犯了一个小错误,你用MMM代替MMM, m代表分钟,m代表月。

更改为如下

dd-mmm-yy to dd-MMM-yy
dd/mm/yy to dd/MM/yy

还有一个错误最后你必须返回sdf1而不是sdf。

java.time

不要使用已替换的日期类。Date,SimpleDateFormat-不!LocalDate,DateTimeFormatter-是的!

格式模式是区分大小写的。对于月份的缩写名称,请使用大写的"MMM"。

指定一个Locale,用于确定用于本地化该月名的人类语言和文化规范。

String oldDate = "05-Apr-23";
DateTimeFormatter dfFrom = DateTimeFormatter.ofPattern("dd-MMM-yy").withLocale( Locale.US );
DateTimeFormatter dfTo = DateTimeFormatter.ofPattern("dd/MM/yy");
String newDate = dfTo.format(LocalDate.parse(oldDate, dfFrom));
System.out.println(newDate);

最新更新