在Java中将日期格式dd-MM-yyyy更改为yyyy-MM-dd

Ran*_*pto 1 java datetime date

我试图将日期字符串08-12-2017转换为2017-12-08(LocalDate).这是我试过的 -

    String startDateString = "08-12-2017";
    LocalDate date = LocalDate.parse(startDateString);
    System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

还尝试使用formatter,但得到相同的结果,一个DateTimeParseException.如何在没有例外的情况下获得像2017-12-08这样的输出?

Joe*_*mov 9

试试这个(见下面的更新)

try {
    String startDateString = "08-12-2017";
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(sdf2.format(sdf.parse(startDateString)));
} catch (ParseException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

更新 - Java 8

    String startDateString = "08-12-2017";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    System.out.println(LocalDate.parse(startDateString, formatter).format(formatter2));
Run Code Online (Sandbox Code Playgroud)

  • 请不要教年轻人使用早已过时且臭名昭著的麻烦的“SimpleDateFormat”类。尤其是当他已经使用现代 Java 日期和时间 API“java.time”中的“LocalDate”时。与此一起工作要好得多。 (2认同)