无法将 JavaFX Datepicker 日期转换为指定的日期格式

Can't Convert JavaFX Datepicker date to a specified date format

无法将 javaFX Datepicker 日期转换为特定的 (dd-MM-yyyy) 日期格式。 在这里我使用了两种使用 SimpleDateFormat 的方法,但是我遇到了一些这样的错误。

使用此方法时

String testDateString = dpfrom.getValue().toString();
            DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
            Date d1 = df.parse(testDateString);
            System.out.println("Date in dd/MM/yyyy format is: "+df.format(d1));

错误信息是:

java.text.ParseException: Unparseable date: "2019-09-23"

使用此方法时:

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
                Date d1= sdf.parse(dpfrom.getValue().toString());
                System.out.println(d1);

我得到了这个输出:

Fri Mar 11 00:00:00 IST 29

但我想要这样的输出:

23-09-2019

请帮我解决这个问题。 我希望你们解决这个问题 problem.Thank 你们...

试试这个

    private void dateTest() {
        try {
            String testDateString = "2019-09-23";
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date d1 = df.parse(testDateString);
            System.out.println(d1);
            df = new SimpleDateFormat("dd-MM-yyyy");
            String d2 = df.format(d1);
            System.out.println(d2);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

输出

Mon Sep 23 00:00:00 ICT 2019
23-09-2019

在您的情况下,将 testDateString 更改为 dpfrom.getValue().toString();

因为您已将问题标记为 Java8 JavaFX8 问题。这是 LocalDate 更 Java-8 的时尚答案:

 String static final DATE_PATTERN = "yyyy-MM-dd"
 String datePickerValue = dpfrom.getValue().toString();
 DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATE_PATTERN);
 LocalDate date = LocalDate.parse(datePickerValue, dtf);

这实际上是新的 Java 时间 API 自 Java 8 (java.time) 包

尝试将 LocalDate 转换为 String 然后尝试将其解析为 Date 是一个坏主意。直接用DateTimeFormatter转成字符串即可:

final String format = "dd-MM-yyyy";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
System.out.println("Date in " + format + " format is: " + formatter.format(d1));