2015-02-23 3 views
0

Я использую следующий способ создания экземпляра времени, который указал hour и minute, и отдыхают сегодня.Как создать новый экземпляр времени на сегодняшний день и только час и минуту указаны

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#year, Date#month и Date#day. Есть ли более краткий способ написать это?

ответ

2

Вы можете использовать Time.parse:

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

Примечание от documentation:

Вы должны требовать 'время', чтобы использовать этот метод.

+0

Может быть сделать более общим путем записи 'час = 15 ; минута = 3; Time.parse ("% d:% 02d"% [час, минута]) # => 2015-02-22 15:03:00 -0800 '. –

0

Вы можете написать это так:

hour = 15 
minute = 21 

require 'date' 
Date.today.to_time + 60*(60 * hour + minute) 
    #=> 2015-02-22 15:21:00 -0800 
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 
Смежные вопросы