【发布时间】:2019-08-29 04:49:14
【问题描述】:
我一直很糟糕,有两次说它不相等
# returns TRUE before persisted, but when retrieved from postgres it's FALSE
end_date == end_date.in_time_zone('Eastern Time (US & Canada)').end_of_day
您立即想到的可能是usec,但是我已经检查过很多次了,两者都是999999:
[21] pry(#<Lease>)> end_date.usec
=> 999999
[22] pry(#<Lease>)> end_date.in_time_zone('Eastern Time (US & Canada)').end_of_day.usec
=> 999999
[23] pry(#<Lease>)> end_date.to_i
=> 1580533199
[24] pry(#<Lease>)> end_date.in_time_zone('Eastern Time (US & Canada)').end_of_day.to_i
=> 1580533199
[25] pry(#<Lease>)> end_date.class
=> ActiveSupport::TimeWithZone
[26] pry(#<Lease>)> end_date.in_time_zone('Eastern Time (US & Canada)').end_of_day.class
=> ActiveSupport::TimeWithZone
[33] pry(#<Lease>)> end_date.iso8601
=> "2020-02-01T04:59:59Z"
[34] pry(#<Lease>)> end_date.in_time_zone('Eastern Time (US & Canada)').end_of_day.utc.iso8601
=> "2020-02-01T04:59:59Z"
这让我发疯了,我不知道还要检查什么......
编辑:看来nsec 是不同的。我该怎么解释这个?如何将纳秒截断到一定的精度 (6)。除非当我的时间涉及“月底”(某个学期结束)时,有更好的方法来处理这个问题
【问题讨论】:
-
为什么需要一个时间段的结束?使用
<=进行比较?如果是这样,你可以改用< beginning_of_next_period。 -
这是租约的期限@fphilipe,因此存储实际上不在租约中的一天的开始日期似乎很奇怪。这意味着当我还想显示租赁日期时,我将不得不从中减去一秒。
-
我强烈建议使用包容性开始和排斥性结束。这更容易。也许这会让你信服:qedcode.com/content/exclusive-end-dates.html
标签: ruby-on-rails ruby activesupport ruby-on-rails-6