Операции над DateTime в рельсах - PullRequest
2 голосов
/ 24 августа 2011

Можно ли вычесть один DateTime из другого и получить результат в Time.Пример, если мы вычтем 2011-08-27 01:00:00 UTC из 2011-08-29 08:13:00 UTC, результат должен быть 55:13:00 (надеюсь, я не ошибся при вычислении: p) Спасибо.

1 Ответ

5 голосов
/ 24 августа 2011

Время, как правило, выражается в секундах, когда вы делаете математику, например, даже дробные секунды, если хотите.Time представляет конкретный момент времени, который, хотя и внутренне представлен в виде секунд с 1 января 1970 года, не предназначен для такой скалярной единицы.

Если у вас есть два DateTime объектаВы можете определить разницу между ними следующим образом:

diff = DateTime.parse('2011-08-29 08:13:00 UTC').to_time - DateTime.parse('2011-08-27 01:00:00 UTC').to_time
# => 198780.0

Если у вас есть количество секунд, остальное - просто проблема форматирования:

'%d:%02d:%02d' % [ diff / 3600, (diff / 60) % 60, diff % 60 ]
# => "55:13:00"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...