我在Ruby中遇到一个奇怪的错误(?)
Time.parse("David").to_i
返回“ David中没有时间信息”。
Time.parse("David1").to_i
返回“ David1”中没有时间信息。
但是
Time.parse("David10").to_i
返回1570654800
似乎任何末尾有2个以上数字的字符串都可以通过Ruby中的时间转换。这是错误吗?
我正在尝试创建一个方法,该方法可以处理相关的字符串到Timestamps的转换,或者如果无法进行转换,则可以简单地返回到字符串,但是对于我的字符串包含2个以上数字的情况,则失败
if value.is_a? String
# if it's string of a date format
begin
Time.parse(value).to_i
rescue StandardError => e
value.downcase
end
# it's another object type - probably DateTime, Time or Date
else
value.nil? ? 0 : value.to_f
end
答案 0 :(得分:3)
内部time.rb
使用,跟随
def parse(date, now=self.now)
comp = !block_given?
d = Date._parse(date, comp)
year = d[:year]
year = yield(year) if year && !comp
make_time(date, year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now)
end
它过去常常以精度来解析日,月底的月份,如果是3则解析数字范围,它认为是年份