Я попробовал строку:
last_item = Item.last
last_item.created_at.strftime('%Y-%m-%d')
и SQL в журнале консоли:
SELECT "items".* FROM "items" ORDER BY items.id DESC LIMIT 1
НО иногда я получаю 2011-04-03
, а иногда 2011-04-04
это действительно странно. Если я распечатываю тайм-аут, это
вс, 03 апр. 2011 17:58:48 UTC +00: 00
что дает Rails 3 (3.0.5) такое недетерминированное поведение? Это часовой пояс? Но я нажимаю «Обновить» в браузере, и в этот раз он показывает 04-03, а в следующий раз - 04-04, не перезагружая сервер и не меняя конфигурационный файл или исходный код.
Обновление: Дальнейшая отладка показывает, что если это 04-04, то время, напечатанное с помощью p last_item.created_at
, равно:
Пн, 04 Апр. 2011 01:58:48 HKT +08: 00
но у меня есть эта строка в представлении:
- Time.zone = 'Hong Kong'
но last_item.created_at.strftime('%Y-%m-%d')
было сделано в контроллере. Так что не должен ли сначала работать контроллер, и, на мой взгляд, я просто пытаюсь напечатать его, используя другой часовой пояс ... также, почему он иногда становится UTC, а иногда HKT?