【问题标题】:Can't Convert JavaFX Datepicker date to a specified date format无法将 JavaFX Datepicker 日期转换为指定的日期格式
【发布时间】:2020-01-23 04:22:18
【问题描述】:

无法将 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

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

【问题讨论】:

    标签: java-8 javafx-8


    【解决方案1】:

    尝试将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));
    

    【讨论】:

      【解决方案2】:

      正如您已将您的问题标记为 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 8 (java.time) 包以来新的 Java Time API

      【讨论】:

        【解决方案3】:

        试试这个

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

        【讨论】:

        • @Erwin,谢谢您的宝贵回答。它对我来说很好
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-12
        • 2018-02-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 2011-08-13
        • 1970-01-01
        相关资源
        最近更新 更多