Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Time.parse错误地返回字符串的时间戳_Ruby - Fatal编程技术网

Ruby Time.parse错误地返回字符串的时间戳

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个数字的字符串都可以通过时间转换。这是虫子吗 我正在尝试创建一个方法,该方法可以处理将字符串转换为相关的时间戳,或者如果转换不可能,则直接转换回字符串,但对于我的字符

我在Ruby中遇到了一个奇怪的bug(?)

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时,将其视为年