如何为今天创建新的Time实例,并且仅指定小时和分钟

时间:2015-02-23 04:39:53

标签: ruby

我正在使用以下方式创建一个指定了hourminute的时间实例,其余的就是今天。

Time.new(Date.today.year, Date.today.month, Date.today.day, hour, minute)

d = Date.today
Time.new(d.year, d.month, d.day, hour, minute)

所以我必须写三次类似的表达Date#yearDate#monthDate#day。有没有更简洁的方式来写这个?

3 个答案:

答案 0 :(得分:2)

您可以使用Time.parse

require 'time'
Time.parse("16:30")
#=> 2015-02-23 16:30:00 -0500

来自documentation

的注释
  

您必须要'时间'才能使用此方法。

答案 1 :(得分:1)

基于spickermans answer,您可以延长时间以获得更简单的功能:

require 'time'
class Time
  def self.today(hour=0,minute=0)
    d = Date.today
    self.new(d.year, d.month, d.day, hour, minute)
  end
end

p Time.today            #-> 2015-02-23 00:00:00 +0100
p Time.today(12)        #-> 2015-02-23 12:00:00 +0100
p Time.today(12,30)     #-> 2015-02-23 12:30:00 +0100

答案 2 :(得分:0)

您也可以这样写:

hour = 15
minute = 21

require 'date'
Date.today.to_time + 60*(60 * hour + minute)
  #=> 2015-02-22 15:21:00 -0800