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

7tofc5zh  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(153)

我想把一个日期格式转换成另一个日期格式。例如,我有这个字符串“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:无法解析日期:“05-Apr-23”.任何反馈将不胜感激!谢谢!

mwkjh3gx

mwkjh3gx1#

你只犯了一个小错误,你必须使用MMM而不是mmm,m是分钟,M是月。
变更如下

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

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

vom3gejh

vom3gejh2#

java.time

不要使用被取代的日期类。DateSimpleDateFormat-不!LocalDateDateTimeFormatter-是!
格式模式区分大小写。对于月份的缩写名称,请使用大写的'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);

相关问题