不可解析的日期异常:“2015-02-06T16:05:20”

问题描述 投票:0回答:2

我有一个日期变量“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 datetime
2个回答
4
投票

您可以将日期格式更改为

"yyyy-MM-dd'T'HH:mm:ss"

了解更多

Java
简单日期格式


0
投票

java.time

2014 年 3 月,Java 8 引入了现代的

java.time
日期时间 API,取代了容易出错的旧版
java.util
日期时间 API
。任何新代码都应使用
java.time
API。

使用现代日期时间 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")

Trail:日期时间

了解有关现代日期时间 API 的更多信息
© www.soinside.com 2019 - 2024. All rights reserved.