2015-06-26 87 views
0

我想从一个时间(这是在模型中不变)和日期(这是存储在数据库中的属性)组成一个datetime对象。我该怎么做?Ruby合并时间和日期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 

附:我不知道如何存储这种情况下的时间常量...

回答

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

+0

非常简单:D。 Stackoverflow杀死我的能力,介意自己......谢谢! – asiniy

+0

'NoMethodError:undefined method“div”for“00”:String' for minutes。我会编辑答案 – asiniy