JXDatePicker swingx语言
JXDatePicker swingx language
修改问题如何让JXDatePicker使用指定语言?
不幸的是,JXDatePicker
依赖于旧的 Java 日期和时间 类,包括 Date
和 DateFormat
。不幸的是,它们的设计很糟糕,后来(5 年前)被 java.time、现代的 Java 日期和时间 API 所取代。您可能想研究一下是否可以找到更现代的日期选择器组件来替换它。
否则,JXDatePicker.setFormats
确实需要 DateFormat
个对象或 String
个对象。合理的解决方案是在将 Locale
传递给日期选择器之前将其传递给 SimpleDateFormat
:
DateFormat dateFormat = new SimpleDateFormat("E, yyyy-MM-dd", Locale.ENGLISH);
要格式化从日期选择器获得的 Date
,您可以选择在格式化之前将其转换为现代类型:
DateTimeFormatter dateFormatter = DateTimeFormatter
.ofPattern("E, yyyy-MM-dd", Locale.ENGLISH);
Date oldfashionedDate = DateDP.getDate();
ZonedDateTime dateTime = oldfashionedDate.toInstant().atZone(ZoneId.systemDefault());
String dateString = dateTime.format(dateFormatter);
System.out.println(dateString);
为 DateTimeFormatter
指定英语语言环境可确保格式化日期具有英文星期几的缩写,例如:
Mon, 2019-08-05
链接
- Oracle tutorial: Date Time 解释如何使用 java.time.
JXDatePicker
documentation
修改问题如何让JXDatePicker使用指定语言?
不幸的是,JXDatePicker
依赖于旧的 Java 日期和时间 类,包括 Date
和 DateFormat
。不幸的是,它们的设计很糟糕,后来(5 年前)被 java.time、现代的 Java 日期和时间 API 所取代。您可能想研究一下是否可以找到更现代的日期选择器组件来替换它。
否则,JXDatePicker.setFormats
确实需要 DateFormat
个对象或 String
个对象。合理的解决方案是在将 Locale
传递给日期选择器之前将其传递给 SimpleDateFormat
:
DateFormat dateFormat = new SimpleDateFormat("E, yyyy-MM-dd", Locale.ENGLISH);
要格式化从日期选择器获得的 Date
,您可以选择在格式化之前将其转换为现代类型:
DateTimeFormatter dateFormatter = DateTimeFormatter
.ofPattern("E, yyyy-MM-dd", Locale.ENGLISH);
Date oldfashionedDate = DateDP.getDate();
ZonedDateTime dateTime = oldfashionedDate.toInstant().atZone(ZoneId.systemDefault());
String dateString = dateTime.format(dateFormatter);
System.out.println(dateString);
为 DateTimeFormatter
指定英语语言环境可确保格式化日期具有英文星期几的缩写,例如:
Mon, 2019-08-05
链接
- Oracle tutorial: Date Time 解释如何使用 java.time.
JXDatePicker
documentation