2015-06-26 4 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 

P.S. Я не знаю, как сохранить постоянную времени для этого случая ...

ответ

3

Вы можете построить новую DateTime с использованием DateTime.new и передать компоненты единой даты, такие как год и месяц.

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 "для" 00 ": String' в течение нескольких минут. Я отредактирую ответ – asiniy

Смежные вопросы