将日期解析为 yyyy-MM-dd HH:mm:ss 格式 [重复]
Posted
技术标签:
【中文标题】将日期解析为 yyyy-MM-dd HH:mm:ss 格式 [重复]【英文标题】:Parse date to yyyy-MM-dd HH:mm:ss format [duplicate] 【发布时间】:2017-09-06 10:33:37 【问题描述】:我想使用 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','preferedName','lastName',
'1989-01-01','M',1,'11221123','test@test.com','address1','address2','Bloomingdale','IL','US','689850',
1,1,'11111','2016-12-31 23:59:59')
(最后一个值中没有T
)
这不起作用:
VALUES('US','101','test','firstname','middleName','preferedName','lastName',
'1989-01-01','M',1,'11221123','test@test.com','address1','address2','Bloomingdale','IL','US','689850',
1,1,'11111','2016-12-31T23:59:59')
(最后一个值为T
)。
【问题讨论】:
你看到的是日期的内部表示。因为Date
没有格式
列的类型是什么,如何尝试存储日期,错误信息是什么?
日期/时间对象 DO NOT 有格式化的概念,它们是从给定时间点开始的毫秒数的容器。这就是为什么有日期/时间格式化程序 - 我建议看看Parsing and Formatting trail
列的类型是 datetime ,我收到错误 - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;糟糕的 SQL 语法
所以显示相关代码。它与日期无关
【参考方案1】:
LocalDateTime 不存储为字符串,而是存储为对象。
你得到一个 "T" 因为 .toString() 方法默认返回 ISO 格式,如下所述: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html
toString
公共字符串 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
【讨论】:
以上是关于将日期解析为 yyyy-MM-dd HH:mm:ss 格式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法解析这种日期格式 yyyy-MM-dd'T'HH:mm:ss.SSSZ?
如何将长口头日期时间转换为雪花中的时间戳(YYYY-MM-DD HH:MM:SS)?