Невозможно преобразовать дату в JavaFX Datepicker в указанный формат даты - PullRequest
0 голосов
/ 23 сентября 2019

Невозможно преобразовать дату javaFX Datepicker в определенный (dd-MM-гггг) формат даты.здесь я использовал два метода, используя 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"

whileиспользуя этот метод:

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

пожалуйста, помогите мне решить эту проблемувопрос.Я надеюсь, что вы, ребята, решили эту проблему. Спасибо ...

Ответы [ 3 ]

1 голос
/ 23 сентября 2019

Поскольку вы отметили свой вопрос как вопрос 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);

Это фактически новый API времени Java, так как пакет Java 8 (java.time)

1 голос
/ 23 сентября 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();
        }
    }

output

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

, в вашем случае измените testDateString на dpfrom.getValue (). ToString ();

0 голосов
/ 23 сентября 2019

Попытка преобразовать 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));
...