加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:04:02 所属栏目:百科 来源:网络整理
导读:我有一个方法来解析一个字符串到一个日期,但我想验证我不尝试解析一个非数字字符串或一个字符串哪个剂量代表日期或时间格式? 这怎么可以? 现在我有: if(string=~ /^D*$/ ){return falseelse do something_else} 这是非常数字的字符串,如“未知”,但不适
我有一个方法来解析一个字符串到一个日期,但我想验证我不尝试解析一个非数字字符串或一个字符串哪个剂量代表日期或时间格式?

这怎么可以?

现在我有:

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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读