Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 如何将时间量转换为秒?_Ruby_Time - Fatal编程技术网

Ruby 如何将时间量转换为秒?

Ruby 如何将时间量转换为秒?,ruby,time,Ruby,Time,假设某人花了3分45秒完成一项任务 我认为是3点45分 但我需要做的是,假设我得到了3:45,将其转换为所花的秒数 所以当给出3:45时,我想把它转换成225 这需要使用Ruby 1.8.7 pry(main)> a = "3:45".split(":") => ["3", "45"] pry(main)> a[0].to_i*60 + a[1].to_i => 225 (当然,这是一种方法。) (当然是用一种方法来包装的。)你可以使用Dave建议的东西,或者如果你需要

假设某人花了3分45秒完成一项任务

我认为是3点45分

但我需要做的是,假设我得到了
3:45
,将其转换为所花的秒数

所以当给出
3:45
时,我想把它转换成
225

这需要使用Ruby 1.8.7

pry(main)> a = "3:45".split(":")
=> ["3", "45"]
pry(main)> a[0].to_i*60 + a[1].to_i
=> 225
(当然,这是一种方法。)


(当然是用一种方法来包装的。)

你可以使用Dave建议的东西,或者如果你需要更多的东西,有一种方法可以做到这一点

它看起来像:

001:0> ChronicDuration.parse("3:45")
225

你可以使用Dave建议的东西,或者如果你需要更多的东西,有一个可以做这些东西的

它看起来像:

001:0> ChronicDuration.parse("3:45")
225

我会小心地在这里重新发明轮子。虽然您可能会假设只有几分钟和几秒钟,并且始终使用相同的格式,但使用更健壮的格式更安全


看看吧,这是一个解析已用时间的宝石。

我会小心地在这里重新发明轮子。虽然您可能会假设只有几分钟和几秒钟,并且始终使用相同的格式,但使用更健壮的格式更安全

def time_to_seconds(str)

  time_in = []
  time_in = str.split(":").reverse
  asec = 0
  secs = [1, 60, 60*60, 60*60*24]

  time_in.size.times do {|i|
    asec += secs[i].to_i * time_in[i].to_i
  end
  sec
end

检查一下,这是一个解析经过时间的宝石。

我会使用乘法。小时呢?我会用乘法。那么小时呢?用它,你如何解释可能包含一个小时(
1:37:49
)?有时时间会在那里,有时不会。@Shpigford检查数组长度。但是我支持乔尔和艾米丽,没有理由用手来做这件事。用这个,你如何解释可能包含一小时(
1:37:49
)的原因?有时时间会在那里,有时不会。@Shpigford检查数组长度。但我和乔尔和艾米丽在一起——没有理由用手来做这件事。+1,更好的主意(这是一个好主意;这是一个长期处理我大部分时间需求的好主意)。+1,更好的主意(这是一个长期处理我大部分时间需求的好主意)。
def time_to_seconds(str)

  time_in = []
  time_in = str.split(":").reverse
  asec = 0
  secs = [1, 60, 60*60, 60*60*24]

  time_in.size.times do {|i|
    asec += secs[i].to_i * time_in[i].to_i
  end
  sec
end