Ruby Time.parse错误地返回字符串的时间戳
我在Ruby中遇到了一个奇怪的bug(?)Ruby Time.parse错误地返回字符串的时间戳,ruby,Ruby,我在Ruby中遇到了一个奇怪的bug(?) Time.parse(“David”).to_i返回“David”中没有时间信息”` Time.parse(“David1”)。to_i在“David1”中返回“无时间信息”` 然而 Time.parse(“David10”).to_i返回1570654800 在Ruby中,任何结尾超过2个数字的字符串都可以通过时间转换。这是虫子吗 我正在尝试创建一个方法,该方法可以处理将字符串转换为相关的时间戳,或者如果转换不可能,则直接转换回字符串,但对于我的字符
Time.parse(“David”).to_i
返回“David”中没有时间信息”`
Time.parse(“David1”)。to_i
在“David1”中返回“无时间信息”`
然而
Time.parse(“David10”).to_i
返回1570654800
在Ruby中,任何结尾超过2个数字的字符串都可以通过时间转换。这是虫子吗
我正在尝试创建一个方法,该方法可以处理将字符串转换为相关的时间戳,或者如果转换不可能,则直接转换回字符串,但对于我的字符串包含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
内部
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时,将其视为年