在我的應用程序,當我選擇'20:45' 至TimePicker,它的格式,如‘下午8:45’ 我可以用下面的代碼重現該問題:無法解析,FomatStyle
String input = "8:45pm";
LocalTimeStringConverter converter = new LocalTimeStringConverter(FormatStyle.SHORT, Locale.ENGLISH);
System.out.println(converter.fromString(input));
這引發了一個例外:
java.time.format.DateTimeParseException: Text '8:45pm' could not be parsed at index 4
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1777)
at javafx.util.converter.LocalDateTimeStringConverter$LdtConverter.fromString(LocalDateTimeStringConverter.java:208)
at javafx.util.converter.LocalTimeStringConverter.fromString(LocalTimeStringConverter.java:119)
at com.jfoenix.skins.JFXTimePickerContent.updateValue(JFXTimePickerContent.java:427)
at com.jfoenix.skins.JFXTimePickerContentTest.updateValue(JFXTimePickerContentTest.java:11)
我該如何解決這個問題?
UPDATE1
java.time.format.DateTimeParseException: Text '8:35 PM' could not be parsed at index 5
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1777)
at javafx.util.converter.LocalDateTimeStringConverter$LdtConverter.fromString(LocalDateTimeStringConverter.java:208)
at javafx.util.converter.LocalTimeStringConverter.fromString(LocalTimeStringConverter.java:119)
at com.jfoenix.skins.JFXTimePickerContent.updateValue(JFXTimePickerContent.java:424)
at com.jfoenix.skins.JFXTimePickerContentTest.updateValue(JFXTimePickerContentTest.java:11)
解決方案
的Java獲取默認的JVM從窗戶偏好的語言環境。
我的JVM的默認語言環境是韓語,即使我將LocalTimeStringConverter設置爲英語,它也會引發異常。
我們可以通過幾種方式設置jvm的語言環境。 oracle Reference
或更改代碼。以下代碼是:
String input = "8:45pm";
input = input.toUpperCase(); // DateTimeFormatter expects "PM" (uppercase)
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("h:mma", Locale.ENGLISH);
LocalTimeStringConverter converter = new LocalTimeStringConverter(dtf, dtf);
System.out.println(converter.fromString(input));
就像Hugo說的。
感謝您的回答。
這使我的應用程序工作的魅力。但是,我想知道使用FormatStyle.SHORT – jkh6100
的問題在我的測試中,我注意到'FormatStyle.SHORT'需要分鐘和「PM」之間的空格(所以它只在輸入是'8:45 PM' (在「5」之後有一個空格) – 2017-04-24 13:49:24
我已經測試過你說了。輸入是「8:45 PM」但是它仍然拋出同樣的異常我更新了這個異常(Update1) – jkh6100