Ruby合并时间和日期到日期时间

时间:2015-06-26 11:04:02

标签: ruby-on-rails ruby datetime

我想从一个时间(在模型中是常量)和日期(属性存储在数据库中)组成一个datetime对象。我该怎么办?

类似的东西:

class Product < AR::Base
  MANUFACTURE_TIME = '08:00' # Is there another way to better write just time?

  def manufactured_at # method, which returns
    # => 1 Jan 2012, 08:00, if self.manufacture_date == Date.new(2012, 1, 1)
    # => 5 oct 2012, 08:00, if self.manufacture_date == Date.new(2012, 10, 5)
    # => 23 Sep 2014, 08:00, if self.manufacture_date == Date.new(2014, 9, 23)
  end
end

P.S。我不知道如何为这种情况存储时间常数...

1 个答案:

答案 0 :(得分:3)

您可以使用DateTime.new构建新的DateTime并传递单日期组件,例如年份和月份。

class Product < AR::Base
  MANUFACTURE_TIME = '08:00'

  def manufactured_at
    hour, minute = MANUFACTURE_TIME.split(':')
    DateTime.new(manufacture_date.year, manufacture_date.month, manufacture_date.day, hour, minute)
  end
end

如果您不希望稍后使用split对其进行分解,您可以根据需要存储时间,即使在数组中也是如此。