Java 8 Can';t将JavaFX日期选择器日期转换为指定的日期格式
无法将javaFX Datepicker日期转换为特定(dd-MM-yyyy)日期格式。 在这里,我使用了两种使用SimpleDataFormat的方法,但是我得到了一些类似的错误 使用此方法时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
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));
@欧文,谢谢你宝贵的回答。这对我来说很好