【问题标题】:How to convert a time string to number of seconds in Ruby如何在 Ruby 中将时间字符串转换为秒数
【发布时间】:2011-02-13 21:55:14
【问题描述】:

我需要将以下时间字符串转换为自午夜(一天开始)以来的秒数。我一直在寻找 Ruby Api 但无法提出解决方案。任何想法将不胜感激。

time_string = '4:12:38 PM ET'

【问题讨论】:

  • 谢谢。感谢您的意见。

标签: ruby time


【解决方案1】:

要将您的字符串转换为时间使用

new_time = Time.parse(time_string)

这将返回一个 Time 对象。然后,您可以像这样从给定时间中减去午夜的时间:

midnight = Time.local(2010,2,13,0,0,0)
seconds = (new_time - midnight).to_i # Number of seconds as an integer, .to_f works too

当然,对于 Time.local,您应该使用今天的日期,而不是上面的硬编码值。

【讨论】:

  • 成功了。在我早期的工作中,我没有使用本地。
【解决方案2】:

如果您安装了 active_support,您也可以这样做

require 'rubygems'
require 'time'
require 'active_support/core_ext/time/calculations'

puts Time.parse('4:12:38 PM ET').seconds_since_midnight.to_i

【讨论】:

  • 您使用的是什么版本的 ruby​​。 require 'active_support..." 行正在为我返回 no such file 错误。
  • 我使用的是 1.8.7,但是 active_support 是一个外部 gem,你必须先安装它:(sudo) gem install activesupport
  • 您必须安装 active_support gem;它没有内置到 Ruby 的标准库中。
  • ActiveSupport 是内置在 Rails 中的,很多人都从那里继承它,但是,正如之前的评论者所说,您可以单独安装它。
猜你喜欢
  • 2012-05-26
  • 2016-10-02
  • 2011-07-04
  • 2011-09-18
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
相关资源
最近更新 更多