Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 从包含毫秒的字符串分析ZoneDateTime_Java_Java 8_Date - Fatal编程技术网

Java 从包含毫秒的字符串分析ZoneDateTime

Java 从包含毫秒的字符串分析ZoneDateTime,java,java-8,date,Java,Java 8,Date,我需要从以下格式的字符串中获取ZoneDateTime: "26.06.2019T00:00:00.123+03:00" 此格式似乎是标准格式,因此我使用以下代码从字符串解析ZoneDateTime: ZonedDateTime.parse("26.06.2019T00:00:00.123+03:00"); 但是,我有一个例外: Exception in thread "main" java.time.format.DateTimeParseException: Text '26.06.20

我需要从以下格式的字符串中获取ZoneDateTime:

"26.06.2019T00:00:00.123+03:00"

此格式似乎是标准格式,因此我使用以下代码从字符串解析ZoneDateTime:

ZonedDateTime.parse("26.06.2019T00:00:00.123+03:00");
但是,我有一个例外:

Exception in thread "main" java.time.format.DateTimeParseException: Text '26.06.2019T00:00:00.123+03:00' could not be parsed at index 0

您使用的格式不是标准格式,因为您使用dd.mm.yyyy作为日期,而不是yyyy-mm-dd。因此,它与parse使用的默认格式设置程序不兼容

您可以为您的特殊情况轻松设置自定义DateTimeFormatter:

String pattern = "dd.MM.yyyy'T'HH:mm:ss.SSSXXX";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

String input = "26.06.2019T00:00:00.123+03:00";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(input, dtf);
System.out.printlnzonedDateTime的输出为正确的ISO格式:

2019-06-26T00:00:00.123+03:00

根据,我建议您使用实际的标准格式,并尝试说服向您提供这些字符串的人也使用实际的ISO格式。

javaDoc:从文本字符串(如2007-12-03T10:15:30+01:00[Europe/Paris])获取ZonedDateTime的实例默认格式设置为ISO_ZONED_DATE_TIME,在此处查看其格式:。此格式似乎是标准格式->否。它看起来很像ISO格式,但它扰乱了日期字段的顺序。首先是年,然后是月,然后是日。基本上从大到小。ISO也使用破折号而不是点。分隔日期字段。您需要将日期格式更改为2019-06-26T00:00:00.123+03:00年-月-日,或者使用自定义日期时间格式,因为没有默认的日期时间格式接受日.月.年格式。它几乎是标准ISO-8601格式,但不完全是。你从哪里得到这种格式的字符串?告诉提供这些字符串的人使用实际的ISO-8601格式,使用yyyy-MM-dd而不是dd.MM.yyyy,而不是这样一种奇怪的、令人困惑的、几乎不是真正标准的格式。