为什么这个DateTime减法操作返回无效结果?

时间:2013-07-03 00:21:04

标签: ruby-on-rails ruby

我有两个DateTime对象,一个在过去,另一个代表当前的日期时间。我试图找出两者之间已经过了多少分钟:

past = "Wed, 03 Jul 2013 00:59:39 UTC +00:00".to_datetime
now  = "Wed, 03 Jul 2013 01:04:19 +0100".to_datetime

seconds = (now - past)             #result is (-83/2160)

这是不正确的。秒数应为280,即两次之间经过的秒数。

1 个答案:

答案 0 :(得分:1)

减去两个DateTimes以天为单位返回已用时间。

所以你可以这样做:

past = "Wed, 03 Jul 2013 00:59:39 UTC +00:00".to_datetime
now  = "Wed, 03 Jul 2013 01:04:19 +0100".to_datetime
seconds = (now - past) * 1.day
# => -3320.0

或者你可以这样做:

seconds = (now.to_i - past.to_i)
# => -3320

※由于时区,结果是否定的。

past.utc
# => Wed, 03 Jul 2013 00:59:39 +0000 
now.utc
# => Wed, 03 Jul 2013 00:04:19 +0000 

您可以看到now实际上早于past