gpt4 book ai didi

ruby-on-rails - 使用多种可接受的格式验证 Ruby 中的日期字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:33 25 4
gpt4 key购买 nike

我有一些字符串可能是也可能不是日期,例如:

"Hello World", "Sept 12, 2013", "Hello World Sept 12"

在这种情况下,我希望只有第二个被视为合适的日期。

到目前为止,我一直在使用 Date.parse 和 Chronic gem,但它们非常宽松,可以转换像 "a a""12-UNKN 这样的字符串/34/OWN1" 到可接受的日期。

例如:

Date.parse '12-UNKN/34/OWN1'

会返回:

 Tue, 12 Nov 2013

所以,我试图将可接受的格式限制为一组我可以控制的格式:

09/12/2013
9/12/2013
9/12/13
09-12-2013
9-12-2013
9-12-13

还有一些带有文本的格式,比如:

Sept 9, 2013 - with or without the coma, accepting Sep, Sept or September and with or without a dot after the month name, covering things like:
Sept. 9, 2013
Sept 09, 2013
Sept. 09, 2013
September 9, 2013
September 09, 2013

关于在 Ruby 中执行此操作的好方法的任何建议,无论是纯 Ruby 还是使用 Rails?

最佳答案

我会尝试一下并详细说明我的评论。将日期与其他字符串分开允许您在将日期交给 Chronic 之前验证多种格式的日期:

validates_format_of :date, with:/\d{2,4}[-/]\d{1,2}[-/]\d{1,4}/, on: :create

这应该可以处理您描述的大部分日期格式。

但是,一个大问题是您不知道某人是以美国格式还是非美国格式提交日期。

更大的问题是知道标题字符串的哪一部分实际上是日期,这要么是一个更复杂的正则表达式,要么让您自己轻松处理并将其作为一个单独的字段。您已经接近于尝试解析自然语言,而这种自然语言无论如何都不是一成不变的。

关于ruby-on-rails - 使用多种可接受的格式验证 Ruby 中的日期字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105494/

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