ruby – 确保字符串是时间或日期格式?

我有一个方法来解析一个字符串到一个日期,但我想验证我不尝试解析一个非数字字符串或一个字符串哪个剂量代表日期或时间格式?

这怎么可以?

现在我有

if(string=~ /^\D*$/ )
{
return false
else 
do something_else
}

这是非常数字的字符串,如“未知”,但不适用于“UNKNowN1”

任何想法,我可以用来确保只有日期或时间格式被解析?

解决方法

DateTime.strptime v ParseDate.parsedate

没有双关语,但是这里的信息现在已经过时了(2015年),并且一些方法和模块已经从Ruby 2.x中删除在这里离开,以防万一有人仍在使用1.8.7

好的,也许这里有一个小双关

您会认为您可以使用Date.parse或DateTime.parse来检查是否有错误的日期(有关Date.parse here的更多信息)

d = Date.parse(string) rescue nil

if d 
   do_something
else
   return false
end

因为错误的值抛出一个可以捕获的异常.但是,测试字符串建议实际返回DateParse的Date

例如 ..

~\> irb
>> Date.parse '12-UNKN/34/OWN1'
=> #<Date: 4910841/2,2299161>
>>

Date.parse只是不够聪明地做这个工作:-(

ParseDate.parsedate做得更好.您可以看到它尝试解析日期,但在测试示例中,找不到有效的年份或月份.更多信息here

>> require 'parsedate'
=> true
>> ParseDate.parsedate '2010-09-09'
=> [2010,9,nil,nil]
>> ParseDate.parsedate 'dsadasd'
=> [nil,nil]
>> ParseDate.parsedate '12-UNKN/34/OWN1'
=> [nil,12,nil]

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...