Java 8 Can';t将JavaFX日期选择器日期转换为指定的日期格式

Java 8 Can';t将JavaFX日期选择器日期转换为指定的日期格式,java-8,javafx-8,Java 8,Javafx 8,无法将javaFX Datepicker日期转换为特定(dd-MM-yyyy)日期格式。 在这里,我使用了两种使用SimpleDataFormat的方法,但是我得到了一些类似的错误 使用此方法时 String testDateString = dpfrom.getValue().toString(); DateFormat df = new SimpleDateFormat("dd-MM-yyyy"); Date d1 = df.parse(tes

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

使用此方法时

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
请帮我解决这个问题。 我希望你们能解决这个问题。谢谢…

试试这个

    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问题。下面是一个更具Java-8风格的答案,带有
LocalDate

 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));

@欧文,谢谢你宝贵的回答。这对我来说很好