微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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]

原文地址:https://www.jb51.cc/ruby/265191.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐