Направляющие: Как я заставляю created_at показывать время в моей зоне текущего времени?

Кажется, что, когда я создаю объект, время не корректно. Вы видите выводом сценария/консоли ниже. Кто-либо встретился с чем-нибудь как это или имеет какие-либо подсказки по отладке?

 >> Ticket.create(...)
=> #<Ticket id: 7, from_email: "foo@example.com", ticket_collaterals: nil, to_email: "foo2@example.com", body: "hello", subject: "testing", status: nil, whymail_id: nil, created_at: "2009-12-31 04:23:20", updated_at: "2009-12-31 04:23:20", forms_id: nil, body_hash: nil>
>> Ticket.last.created_at.to_s(:long)
=> "December 31, 2009 04:23"
>> Time.now.to_s(:long)
=> "December 30, 2009 22:24"
6
задан Coleman 1 November 2012 в 22:58
поделиться

1 ответ

Это проблема с часовым поясом. Time.now печатает время в вашем местном часовом поясе, в то время как рельсы сообщают об этом в UTC. Смотрите config/environment.rb, там будет config.time_zone = "UTC"

>> Ticket.create(...)
>> Ticket.last.created_at.utc
=> Thu, 31 Dec 2009 04:41:58 UTC +00:00
>> Time.now.utc
=> Thu Dec 31 04:42:18 UTC 2009
>> Time.now
=> Wed Dec 30 20:44:50 -0800 2009

Вы можете установить TimeZone в environment.rb, чтобы избежать путаницы.

# config/environment.rb
config.time_zone = "Central Time (US & Canada)"
15
ответ дан 8 December 2019 в 16:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: