我正在尝试将用户选择的开始日期和结束日期与当前时间进行比较,以防止用户选择过去的时间。它可以工作,除非你必须选择一个时间,在我的情况下,提前 4 小时才能通过验证。
看法:
datetime_select(:start_date, ampm: true)
控制器:
if self.start_date < DateTime.now || self.end_date < DateTime.now
errors.add(:date, 'can not be in the past.')
end
self.start_date
正在返回我当前的时间,但在 UTC 中这是错误的。DateTime.now
正在返回我当前的时间,但偏移量为 -0400,这是正确的。
例子:
我现在的时间是 2013-10-03 09:00:00.000000000 -04:00
self.start_date 是 2013-10-03 09:00:00.000000000 Z
DateTime.now 是 2013-10-03 09:00:00.000000000 -04:00
为什么会发生这种情况以及解决它的最佳方法是什么?