Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java datetime分析异常:无法分析文本_Java_Datetime - Fatal编程技术网

Java datetime分析异常:无法分析文本

Java datetime分析异常:无法分析文本,java,datetime,Java,Datetime,这段代码在我的旧电脑上运行良好。然而,一旦我把它移到这台计算机上,我就收到了这个异常。我从其他帖子中找到了可能的答案,即添加Locale.US不起作用 基本上 Locale locale = new Locale("en", "US"); DateTimeFormatter dtformatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS",locale); LocalTime time =

这段代码在我的旧电脑上运行良好。然而,一旦我把它移到这台计算机上,我就收到了这个异常。我从其他帖子中找到了可能的答案,即添加
Locale.US
不起作用

基本上

        Locale locale = new Locale("en", "US");
        DateTimeFormatter dtformatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS",locale);
        LocalTime time = LocalTime.parse("20190502050634678",dtformatter);

Exception in thread "main" java.time.format.DateTimeParseException: Text '20190502050634678' could not be parsed at index 0
    at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)
    at java.time.format.DateTimeFormatter.parse(Unknown Source)
    at java.time.LocalTime.parse(Unknown Source)

我不知道如何克服这个问题?我删除了
Locale
,这也不起作用

这是因为Java未能解析第二部分的分数。jdk中有一个直到Java9才修复的bug。也许这就是为什么当你将程序从一台计算机移动到另一台计算机时失败的原因,因为它们使用不同的Java运行时。您可以将另一台计算机上的运行时更新为Java 9

或者使用以下代码

    Locale locale = new Locale("en", "US");
    DateTimeFormatter formatter =
            new DateTimeFormatterBuilder()
                    .appendPattern("yyyyMMddHHmmss")
                    .appendValue(ChronoField.MILLI_OF_SECOND, 3)
                    .toFormatter();
    LocalTime time = LocalTime.parse("20190502050634678",formatter);

解决方案是从这里借来的

这是因为Java未能解析第二部分的分数。jdk中有一个直到Java9才修复的bug。也许这就是为什么当你将程序从一台计算机移动到另一台计算机时失败的原因,因为它们使用不同的Java运行时。您可以将另一台计算机上的运行时更新为Java 9

或者使用以下代码

    Locale locale = new Locale("en", "US");
    DateTimeFormatter formatter =
            new DateTimeFormatterBuilder()
                    .appendPattern("yyyyMMddHHmmss")
                    .appendValue(ChronoField.MILLI_OF_SECOND, 3)
                    .toFormatter();
    LocalTime time = LocalTime.parse("20190502050634678",formatter);

解决方案是从这里借来的

SSS
SSS
不代表毫秒吗?根据我在回答中提到的链接,这是JDK中的一个错误,后来得到了修复。因此,如果我使用java JDK 9,那么我的代码就可以工作了?是的。您可以先在在线java编译器上验证它。以下是我尝试过的不代表毫秒的代码。根据我在回答中提到的链接,这是JDK中的一个错误,后来得到了修复。因此,如果我使用java JDK 9,那么我的代码会工作吗?是的。您可以先在在线java编译器上验证它。这是我试过的