Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
将字符串转换为LocalDateTime Java 8_Java_String_Localdatetime_Datetimeformatter - Fatal编程技术网

将字符串转换为LocalDateTime Java 8

将字符串转换为LocalDateTime Java 8,java,string,localdatetime,datetimeformatter,Java,String,Localdatetime,Datetimeformatter,我正在尝试将以下字符串转换为LocalDateTime: String dateStr = "2020-08-17T10:11:16.908732"; DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.nnnnnn"); LocalDateTime dateTime = LocalDateTime.parse(dateStr, format); 但我

我正在尝试将以下字符串转换为LocalDateTime:

String dateStr = "2020-08-17T10:11:16.908732"; 

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.nnnnnn");
LocalDateTime dateTime = LocalDateTime.parse(dateStr, format);
但我犯了以下错误:

java.time.format.DateTimeParseException: Text '2020-08-17T10:11:16.908732' could not be parsed at index 10
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.LocalDateTime.parse(LocalDateTime.java:492)
有人能帮我建议如何将字符串正确格式化为LocalDateTime吗


非常感谢您提供的DateTime字符串模式应更新为“yyyy-MM-dd'HH:MM:ss.nnnnnn”

所以代码应该是这样的:

String dateStr = "2020-08-17T10:11:16.908732"; 

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.nnnnnn");
LocalDateTime dateTime = LocalDateTime.parse(dateStr, format);
有关更多详细信息,请参阅

在给定的输入日期时间中,它使用了6位数字,所以不可能是纳秒。因为nano是1/100000000。所以它至少有9个数字。因此正确的格式应该是第二个分数,6位数字为“yyyy-MM-dd'HH:MM:ss.ssss”

最终结果比较:

带图案:“yyyy-MM-dd'HH:MM:ss.nnnnnn”

输出:2020-08-7T10:11:16.000908732

带有模式:“yyyy-MM-dd'HH:MM:ss.SSSSSS”

输出:2020-08-7T10:11:16.908732


对于给定的日期时间字符串模式,应更新为“yyyy-MM-dd'HH:MM:ss.nnnnnn”

所以代码应该是这样的:

String dateStr = "2020-08-17T10:11:16.908732"; 

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.nnnnnn");
LocalDateTime dateTime = LocalDateTime.parse(dateStr, format);
有关更多详细信息,请参阅

在给定的输入日期时间中,它使用了6位数字,所以不可能是纳秒。因为nano是1/100000000。所以它至少有9个数字。因此正确的格式应该是第二个分数,6位数字为“yyyy-MM-dd'HH:MM:ss.ssss”

最终结果比较:

带图案:“yyyy-MM-dd'HH:MM:ss.nnnnnn”

输出:2020-08-7T10:11:16.000908732

带有模式:“yyyy-MM-dd'HH:MM:ss.SSSSSS”

输出:2020-08-7T10:11:16.908732


在这种情况下,您不需要指定
DateTimeFormatter
,因为如果您根本不传递一个,将使用默认值:

public static void main(String[] args) {
    String dateStr = "2020-08-17T10:11:16.908732";
    LocalDateTime dateTime = LocalDateTime.parse(dateStr);
    System.out.println(dateTime);
}
该代码将输出
2020-08-17T10:11:16.908732

如果您坚持使用自定义<代码> DateTimeFormatter <代码>,请在模式中单独引用该代码>代码>,不要使用纳秒解析(<代码> n>代码>)解析第二部分(<代码> s>代码>),否则结果可能是错误的。

这样做:

public static void main(String[] args) {
    String dateStr = "2020-08-17T10:11:16.908732"; 
    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
    LocalDateTime dateTime = LocalDateTime.parse(dateStr, format);
    System.out.println(dateTime);
}
具有与上述相同的输出

注意:
使用模式“yyyy-MM-dd'T'HH:MM:ss.nnnnnn”的结果将不等于解析的
字符串
,而是

2020-08-17T10:11:16.000908732

在这种情况下,您不需要指定
日期时间格式,因为如果您根本不传递,将使用默认格式:

public static void main(String[] args) {
    String dateStr = "2020-08-17T10:11:16.908732";
    LocalDateTime dateTime = LocalDateTime.parse(dateStr);
    System.out.println(dateTime);
}
该代码将输出
2020-08-17T10:11:16.908732

如果您坚持使用自定义<代码> DateTimeFormatter <代码>,请在模式中单独引用该代码>代码>,不要使用纳秒解析(<代码> n>代码>)解析第二部分(<代码> s>代码>),否则结果可能是错误的。

这样做:

public static void main(String[] args) {
    String dateStr = "2020-08-17T10:11:16.908732"; 
    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
    LocalDateTime dateTime = LocalDateTime.parse(dateStr, format);
    System.out.println(dateTime);
}
具有与上述相同的输出

注意:
使用模式“yyyy-MM-dd'T'HH:MM:ss.nnnnnn”
的结果将不等于解析的
字符串
,而是

2020-08-17T10:11:16.000908732

您是否看到
T
dateStr
中将日期与时间部分分开?你的模式不考虑它…另外,
n
意味着纳秒,但是您的示例
String
只包含6秒的分数,这使得
S
在这里显得更合适。顺便说一下,您尝试解析的格式是Java提供的标准格式。您可以使用
DateTimeFormatter.ISO_LOCAL_DATE_TIME
而不是使用自己的模式。您是否看到
T
dateStr
中将日期与时间部分分开?你的模式不考虑它…另外,
n
意味着纳秒,但是您的示例
String
只包含6秒的分数,这使得
S
在这里显得更合适。顺便说一下,您尝试解析的格式是Java提供的标准格式。您可以使用
DateTimeFormatter.ISO\u LOCAL\u DATE\u TIME
而不是使用自己的模式。是否打印了此解析的结果?它将不等于
dateStr
!谢谢高拉夫。我之前确实尝试过将T添加到格式化程序中,但没有意识到我需要将其用单引号括起来,例如“T”@deHaar:是的,正确,它使用纳秒,精度为9位。它应该使用6位精度。Gaurav Jeswani-对于给定的日期时间字符串,不需要显式使用
DateTimeFormatter
。检查其中不仅提到了解析此日期时间字符串的惯用方法,还添加了一些其他有价值的信息。您是否打印了此解析的结果?它将不等于
dateStr
!谢谢高拉夫。我之前确实尝试过将T添加到格式化程序中,但没有意识到我需要将其用单引号括起来,例如“T”@deHaar:是的,正确,它使用纳秒,精度为9位。它应该使用6位精度。Gaurav Jeswani-对于给定的日期时间字符串,不需要显式使用
DateTimeFormatter
。检查不仅提到了解析这个日期时间字符串的惯用方法,而且还添加了一些其他有价值的信息。回答得好!坚持下去!回答得好!坚持下去!