【发布时间】:2022-01-09 15:39:17
【问题描述】:
我在数据库中有几个不同格式的日期数据,如下所示:
When
---
2021-11-20
2021-11-20 05:03:31
2021-11-20 04:19:25.4
19-11-2021 19:11
19/11/2021 17.39
19 November'21 16:00
19-November-2021
19/11/2021
19-Nov-2021
现在我想一次性将它们更改为dd-mm-yyyy 的格式,以便它们可以在 Java 中统一。我之前在堆栈溢出中找到了一些答案,例如SimpleDateTime 和DateTimeFormatter 的使用,但日期时间格式似乎只有一种,他们想更改为一种特定的日期时间形式,但就我而言,日期时间形式看起来很随意。任何想法将不胜感激。提前致谢。
附:我想清理用户即将到来的输入,因为它具有“何时”的输入字段,但填充格式仍然取决于用户选择他们喜欢的格式。这肯定不是一个好的做法,但是更改这个基本且最可能使用的方法会导致这种不必要的冲突。
【问题讨论】:
-
您可能会尝试按顺序解析格式并在匹配时获取值,但除非传入的格式是众所周知且明确的,否则它将始终是一个脆弱的过程。
-
这些示例在您的数据库中有哪些类型?可能是在数据库/查询级别对它们进行规范化的选项。
-
您指定的格式是多种多样的,所以不要认为有任何开箱即用的方法来解析它们。可能您必须创建一个小实用程序,您可以在列表中保存不同的模式,然后对于从 DB 收到的每个日期,您必须将其与每种定义的格式进行匹配。
-
既然你提到
SimpleDateTime和DateTimeFormatter:永远不要使用SimpleDateFormat。它是一个臭名昭著的麻烦制造者,而且早已过时。始终使用DateTimeFormatter。在链接的原始问题中,您会找到两者的示例,因此请明智地过滤。 -
遇到
02/11/2021时,真正的问题来了。那么您将不知道是 2 月 11 日还是 11 月 2 日。
标签: java spring-boot datetime