【问题标题】:Parse a time span解析时间跨度
【发布时间】:2013-10-26 01:33:14
【问题描述】:

我正在尝试获取一个字符串 "00:04:55",并将其解析为某种 Ruby 对象,以便获得总秒数。类似于 C# 中的简单 timespan

【问题讨论】:

  • 你失去了很多潜在的答案,因为你没有描述你想要什么。

标签: ruby-on-rails ruby datetime ruby-on-rails-3.2 timespan


【解决方案1】:

使用Time.strptime 会做你想做的事(我认为):

> require 'time' # not needed inside rails
> time = Time.strptime("06:04:55", "%H:%M:%S")
> time.sec
55
> time.min
4
> time.hour
6
> require 'active_support/core_ext' # not needed in rails
> time.seconds_since_midnight.to_i
21895

【讨论】:

  • 这是完美的。非常感谢!
  • 您不需要 ActiveSupport,只需 require 'time'Time.strptime 是 Ruby 标准库的一部分。
  • @AndrewMarshall:现已修复。
【解决方案2】:

你可以使用一个技巧,它不是很优雅但它应该这样做:

Date.parse(Time.now.strftime("%d")+' '+"00:04:55")
# => #<Date: 2013-10-26 ((2456592j,0s,0n),+0s,2299161j)>

【讨论】:

  • 日期:2013-10-26 ((2456592j,0s,0n),+0s,2299161j)
  • 我想我可以为它做一个包装器:/。很遗憾 Ruby 没有针对这类东西的 OOTB 解决方案。
  • 我得到的输出是:=> Sat, 26 Oct 2013
  • 嗯。我无法读取输出。我得到了一个 Date 对象。 x = Date.parse(Time.now.strftime("%d")+' '+"00:04:55") # => # x.day # => 26 x.month # => 10
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 2015-11-09
  • 1970-01-01
相关资源
最近更新 更多