将字符串转换为java.sql.LocalDateTime时出错

将字符串转换为java.sql.LocalDateTime时出错,java,Java,我尝试将字符串转换为LocalDateTime。这是我的密码 String val = "2015-07-18T13:32:56.971-0400" DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ"); java.time.LocalDateTime dateTime = java.time.LocalDateTime.parse(val, formatter); 但是

我尝试将字符串转换为LocalDateTime。这是我的密码

String val = "2015-07-18T13:32:56.971-0400"
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
java.time.LocalDateTime dateTime = java.time.LocalDateTime.parse(val, formatter);
但是这样做我会得到以下错误

The method ofPattern(String) is undefined for the type DateTimeFormatter
The method parse(CharSequence, DateTimeFormatter) in the type LocalDateTime is not applicable for the arguments (String, DateTimeFormatter)

有人能建议我怎么做吗?

从字符串中删除前导的
-

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

String val = "2015-07-18T13:32:56.971-0400";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
LocalDateTime dateTime = LocalDateTime.parse(val, formatter);
System.out.println(dateTime);    
2015-07-18T13:32:56.971


您的代码基本上是正确的。首先,请确保您正在导入正确的包:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
第二,您的第一行字符串val的第一个字符中有一个输入错误(-),并且缺少一个分号:

// Remove - from the String and put ; at the end
// String val = "-2015-07-18T13:32:56.971-0400"
String val = "2015-07-18T13:32:56.971-0400";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
LocalDateTime dateTime = java.time.LocalDateTime.parse(val, formatter);
//Print to test:
System.out.println(dateTime);
//Result on the console: 2015-07-18T13:32:56.971

DateTimeFormatter
类的包是什么?请检查您使用的
DateTimeFormatter
类型。我猜您在项目中也有Joda时间。您的示例字符串中有
-
。这是打字错误吗?否则,请尝试从字符串中删除
-
。正如@Jon SKeet告诉我的,我也导入了org.joda.datetimepomratter,这就是问题所在。。不是“-”而是前导“-”也是一个问题:原因:java.time.DateTimeException:YearOfEra的值无效(有效值1-9999999/100000000):-2015