2015-09-11 2 views
0

Я использую методы DateTime.now и Time.now. И я храню его в некоторых переменных. Теперь я хочу это через несколько минут. Это означает, что вместо часов и минут я хочу получить время только за несколько минут.Как получить время полностью в минутах в рельсах?

2.2.2 :014 > datetime = DateTime.now 
=> Fri, 11 Sep 2015 12:13:00 +0530 
2.2.2 :015 > time = Time.now 
=> 2015-09-11 12:13:06 +0530 
2.2.2 :016 > 

Теперь я хочу рассчитать это время целиком за считанные минуты. есть ли какой-либо метод, например to_minutes, как показано ниже?

datetime_in_min = datetime.to_minutes 
time_in_min = time.to_minutes 

ответ

0

Вы можете использовать следующий метод из Time:

Time.now.to_i 

, чтобы получить количество секунд, прошедших с Эпоха (1 января 1970 00:00 UTC).

+0

Как это сделать в определенный часовой пояс «Азия, Тихоокеанский» будет Time.now и DateTime.now дает время в часовом поясе, настроенном в файле application.rb? – John

+0

Это не должно зависеть от конкретного часового пояса. Было бы полезно, если бы вы могли более четко указать свою проблему. – dimakura

0

Метод strftime может предоставить вам любую часть времени, которое вы хотите. Время в минутах (я предполагаю, что по сравнению с началом дня) вам нужно сделать некоторые математике:

hours = datetime.strftime('%k').to_i 
hours_in_minutes = hours * 60 
minutes = datetime.strftime('%M').to_i 
minutes_since_start_of_day = hours_in_minutes + minutes 

То же самое работает время.

+0

Это не сработает, так как 'strftime' возвращает минуты в строке и, следовательно, если часы равны 20, тогда' hours * 60' просто вернет что-то вроде «202020202020202020202020 ...», что явно неверно. – Aakanksha

+0

Хороший улов @ Ааканша, исправленный – frankpinto

0

Это должно быть уже сделано сейчас, но только для тех, кто все еще ищет ответ, попробуйте сделать что-то вроде ниже

позволяет предполагать, мы хотим принести минуты и часы от чего-то вроде

s = Sat, 27 May 2017 02:30:00 UTC +00:00 (дата время)

тогда

hours = s.strftime("%H") 
minutes = s.strftime("%M") 
total_minutes((hours.to_i * 60) + minutes) 

, следовательно, вы получите что-то вроде 150

Надеюсь, что это поможет.