我有一个日期变量“StartTime”,我需要在其中存储此输入字符串“2015-02-06T16:05:20”
我尝试如下,但它给出了无法解析的日期异常。我做错了什么?
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String inputTime = "2015-02-06T16:05:20";
setStartTime(dateFormat.parse(inputTime));
java.time
2014 年 3 月,Java 8 引入了现代的
java.time
日期时间 API,取代了容易出错的旧版java.util
日期时间 API。任何新代码都应使用 java.time
API。
您的日期时间字符串采用 ISO 8601 格式,这也是
LocalDateTime#parse
默认使用的格式。因此,您不需要明确使用 DateTimeFormatter
。
演示:
class Main {
public static void main(String args[]) {
LocalDateTime ldt = LocalDateTime.parse("2015-02-06T16:05:20");
System.out.println(ldt);
}
}
输出:
2015-02-06T16:05:20
注意: 如果由于某种原因,您需要
java.util.Date
的实例,请让 java.time
API 完成解析日期时间字符串的繁重工作,并将上述代码中的 ldt
转换为 java.util.Date
实例使用 Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant())
。请注意,ZoneId.systemDefault()
返回JVM的ZoneId
;因此,如果需要,请更改它,例如到ZoneId.of("America/New_York")
。
了解有关现代日期时间 API 的更多信息