gpt4 book ai didi

java - 将任意字符串解析为Sql日期

转载 作者:行者123 更新时间:2023-12-01 12:28:04 29 4
gpt4 key购买 nike

我想知道是否可以在不指定字符串格式的情况下将任何字符串(至少尝试)解析为 sql Date ?换句话说,我想创建一个通用方法,它将字符串作为输入并返回 sql 日期。

例如我有:

String date1="31/12/2099";
String date2="31-12-2099";

并调用parseToSqlDate(date1)和parseToSqlDate(date2),这将返回sql日期。

最佳答案

简短回答:否

原因:将任何字符串解析为有效日期是您作为智能生物无法完成的任务(没有“逻辑”方法来确定正确的日期),因此您无法“告诉”计算机(程序)为你做这件事(参见 JGrice 的评论,我们仍然有 4 位数的年份)。

长答案:也许,如果您愿意冒险或不需要高成功率。

如何:

  1. 定义日期的最低(格式)要求。例如。 “最小日期包含 1-8 个数字; 01/01/2001 、 01-01-01 、 01.01 (+当前年份) 、 1.1 (+当前年份)、1 (+当前月份 + 当前年份) 和/或”。 .包含 1-6 个数字和代表月份的字母”;01-Jan-2001 等等。

  2. 使用 [^0-9a-zA-Z] 之类的正则表达式沿任何非数字/非月份名称字符拆分输入(快速思考,可能存在一些陷阱)

  3. 您现在有 1 到 3 个(如果包括时间,实际上更多)单独的数字 + 1 个月份名称,可以按照您喜欢的方式按年/月/日对齐

对于这种“对齐”,有几种可能性:

  • 首先尝试固定格式,如果“适合”,则采用它,否则尝试其他格式(或失败)
  • (只有您一次获得多个条目)通过假设所有条目都相同来猜测格式(例如,任何包含值 > 12 的数字 block 不是一个月,> 31 不是一天)

但是,这是一个很大的问题,你可以期望任何这样的方法在某个时候成为主要的 PITA,因为你永远不能完全“相信”它能够正确猜测(你永远不能一定遗漏了一些特殊格式或引入了一些模棱两可的解释)。我概述了一些案例/格式,但绝对不是全部,因此如果您实际使用该方法,您将经常改进该方法。

您的评论的附录:“可能是添加另一个参数,并以这种方式知道 day 、month 等去哪里?”所以你愿意添加“pseudo-format-string”参数来指定日、月、年的顺序;这将使事情变得更加容易(因为可以实现“简单地”过滤掉分隔符)。

关于java - 将任意字符串解析为Sql日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26181484/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com