如何使用DatePicker的自定义日期格式

时间:2016-04-25 17:03:02

标签: javafx-8

除了目前支持的格式外,还有办法配置DatePicker接受自定义格式吗?

例如 - 而不是用户输入" 04/06/2016"进入该领域,他们可以进入" 04062016"或" 04.06.2016"?

目前我可以看到可接受的分隔符是" /"和" - "。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以根据需要定义任意数量的模式,并在转换器中检查输入的日期是否适合其中任何一个。

private final List<String> patterns = Arrays.asList(
        "MM/dd/yyyy", "MMddyyyy", "MM.dd.yyyy");

@Override
public void start(Stage stage) {
    DatePicker datePicker = new DatePicker();
    datePicker.setConverter(new StringConverter<LocalDate>() {
        @Override
        public String toString(LocalDate date) {
            if (date != null) {
                for (String pattern : patterns) {
                    try {
                        return DateTimeFormatter.ofPattern(pattern).format(date);
                    } catch (DateTimeException dte) { }
                }
                System.out.println("Format Error");
            } 
            return "";
        }
        @Override
        public LocalDate fromString(String string) {
            if (string != null && !string.isEmpty()) {
                for (String pattern : patterns) {
                    try {
                        return LocalDate.parse(string, DateTimeFormatter.ofPattern(pattern));
                    } catch (DateTimeParseException dtpe) { }
                }
                System.out.println("Parse Error");
            }
            return null;
        }
    });
}

答案 1 :(得分:0)

现在有一个更清晰的示例in the docs here