将日期解析成 yyyy-MM-dd HH:mm:ss 的格式。

16 浏览
0 Comments

将日期解析成 yyyy-MM-dd HH:mm:ss 的格式。

这个问题已经在这里有了答案

如何使用LocalDateTime解析/格式化日期?(Java 8)

我想使用LocalDateTime.parse()方法解析日期,格式为yyyy-MM-dd HH:mm:ss,但实际上我得到的日期格式是yyyy-MM-ddTHH:mm:ss。我不需要那个“T”。请查看下面的代码。

LocalDateTime.parse("2016-10-31 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

我得到的结果是2016-10-31T23:59:59。请注意那个“T”。这个“T”导致了问题,从而使我无法将它持久化到我的数据库中。我尝试将值持久化到datetime类型的列中;我得到了错误——org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback;bad SQL grammar

看一下这些可以工作的值

VALUES('US','101','test','firstname','middleName','preferedN‌​ame','lastName',
       '198‌​9-01-01','M',1,'1122‌​1123','test@test.com‌​','address1','addres‌​s2','Bloomingdale','‌​IL','US','689850',
       1,‌​1,'11111','2016-12-3‌​1 23:59:59')

(在最后一个值中没有T

这是不起作用的:

VALUES('US','101','test','firstname','middleName','preferedN‌​ame','lastName',
       '198‌​9-01-01','M',1,'1122‌​1123','test@test.com‌​','address1','addres‌​s2','Bloomingdale','‌​IL','US','689850',
       1,‌​1,'11111','2016-12-3‌​1T23:59:59')

(在最后一个值中带有T)。

admin 更改状态以发布 2023年5月23日
0
0 Comments

LocalDateTime 不以字符串形式存储,而是作为对象存储。

你得到了一个 "T",因为 toString() 方法默认返回 ISO 格式,如下所述:
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html

toString

public String toString()

将此日期时间输出为字符串,例如 2007-12-03T10:15:30。

输出将是以下 ISO-8601 格式之一:

uuuu-MM-dd'T'HH:mm
uuuu-MM-dd'T'HH:mm:ss
uuuu-MM-dd'T'HH:mm:ss.SSS
uuuu-MM-dd'T'HH:mm:ss.SSSSSS
uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS

使用的格式将是最短的,输出完整值的时间,省略部分被认为是零。

要按照你的需要输出,请使用 format 函数。

LocalDateTime d = LocalDateTime.parse("2016-10-31 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("toString: " + d.toString());
//toString: 2016-10-31T23:59:59                                                                                                                                                                                                                           
System.out.println("format:   " + d.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//format:   2016-10-31 23:59:59  

0