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

前端之家收集整理的这篇文章主要介绍了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]

猜你在找的Ruby相关文章