Код отправки электронной почты rails требует завтра + 2 дня, почему это так? - PullRequest
1 голос
/ 29 апреля 2011

У меня есть цикл для выбора 'LibrarySwaps' на завтра.

Это работает, но не тогда, когда я устанавливаю значение по умолчанию days_ahead 1 (возвращает записи с текущей датой).

ПочемуМне нужно добавить 2 к дате, чтобы получить день, чем будет только 1 день в будущем?Я делаю это в 11:00 по восточному поясному времени, так что это не проблема часового пояса с этим, и UTC - это один и тот же день ... Я подумал, может быть, потому что одна сторона имеет компонент времени, а другая нет, но нет, я используюdate () для sql и Date + 1.days для рубина.Я могу переключиться на (одна дата минус другая дата) и посмотреть на результат.

Спасибо!

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 ])
  end

1 Ответ

2 голосов
/ 29 апреля 2011

MySQL, скорее всего, хранит ваше поле suggested_date в UTC. Таким образом, запись с 22:00 4/29 будет фактически сохраняться как 3:00 4:30 (при условии, что вы находитесь в восточном часовом поясе).

Вы можете сделать это, чтобы добавить смещение ко времени, которое вы ищете:

    @upcoming_swaps = LibrarySwap.all(:conditions => ['date(convert_tz(suggested_date,'+00:00','-05:00')) = ?',Date.today + days_ahead.day ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...