Получение местного времени - PullRequest
3 голосов
/ 28 июля 2010

Это время хранится в виде строки:

2010-07-25 04: 16: 25

Это время по Гринвичу для некоторых действий, которые я предпринял.

Поскольку я живу в часовом поясе Иерусалима, я хотел бы показать его в Иерусалимское время, то есть в 07:16 утра, а не в время по Гринвичу 04:16:25, то есть 3 часа назад.

Как правильно преобразовать его программно с помощью Ruby on Rails? Кажется, я теряюсь из-за множества функций часового пояса и соображений, которые необходимо учитывать при обслуживании пользователей из разных мест.

Я пытался: Time.parse ("2010-07-25 04:16:25") и это дало мне: «Солнце 25 июля 04:16:25 +0300 2010».

Полагаю, "+0300" - это разница с тем, где я нахожусь?

Некоторый свет на это, или даже ссылка на хорошую статью, которая не предполагает, что вы знаете много, поможет.

Ответы [ 2 ]

4 голосов
/ 28 июля 2010

Вы можете определить свой часовой пояс в файле environment.rb (если вы используете Rails 2.3. *) Или application.rb (если вы используете Rails 3).

Просто посмотрите раздел о часовых поясах, и все объяснено в комментарии. Он скажет что-то вроде этого (это из Rails 3):

# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)'

Просто раскомментируйте эту последнюю строку, и все будет в порядке.

0 голосов
/ 28 октября 2016

Чтобы легко настроить его в зависимости от локальной зоны вашей системы, вы можете добавить это в свое приложение.

config.time_zone = Time.now.zone

и вы можете использовать что-то вроде этого, чтобы получить местное время

Post.created_at.localtime
...