开发者

rails email sending code needs days + 2 for tomorrow, why is that?

开发者 https://www.devze.com 2023-03-01 19:05 出处:网络
I have a loop to select \'LibrarySwaps\' for tomorrow. This works, but not when I set days_ahead default to 1 (it returns records with todays date).

I have a loop to select 'LibrarySwaps' for tomorrow.

This works, but not when I set days_ahead default to 1 (it returns records with todays date).

Why do I need to add 2 to the date to get a day than is only 1 day in the future? I am doing this 11am EST so this is not a time zone issue with that and UTC both being the same day... I thought maybe 'cos one side has a time component and the other doesn't but nope, I'm using date() for the sql and Date + 1.days for the ruby. I may switch to (one date minus the other date) and look at the result.

Thanks!

Returns Tomorrows (uses 2):
  def self.find_future_swaps(days_ahead=2)
    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(suggested_date) = ?',Date.today + days_ahead.day ])
  end

Returns Todays (uses 1):
  def self.find_future_swaps(days_ahead=1)
    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(suggested_date) = ?',Date.today + days_ahead.day ])
  e开发者_如何学Gond


MySQL is likely storing your suggested_date field in UTC. So an entry from 10pm on 4/29 would actually be stored as 3am on 4/30 (assuming you're in the Eastern timezone).

You can do this to add the offset to the times you're searching for:

    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(convert_tz(suggested_date,'+00:00','-05:00')) = ?',Date.today + days_ahead.day ])
0

精彩评论

暂无评论...
验证码 换一张
取 消