2012-04-13 5 views
2

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

+0

Знаете ли вы пользователи? Вы можете получить местное время от этой информации. –

ответ

3

Вы не можете сделать это только с Ruby, потому что такая информация недоступна на стороне сервера.

1) Если вы знаете местоположение пользователя, вы можете выполнить геолокацию и determine the timezone. Но это может быть проблемой, если диапазон ip, который вы получили от гео базы данных, имеет несколько временных интервалов.

2) Другое решение, вы можете использовать javascript, чтобы помочь. Итак, с помощью javascript вы можете рассчитать часовой пояс и установить его как cookie, а затем получить доступ с Ruby от объекта запроса. (How to get timezone with Javascript)

+0

hmmm, так как я читаю возможности, я думаю, что лучшее решение позволит пользователю настроить свой часовой пояс и с этим часовым поясом, а затем работать ... Спасибо. – user984621

+0

всегда думает, прежде чем реализовать ... больше проблема UX не слишком скучна для пользователя (не требует слишком много ненужных действий от пользователя). Если пользователю не нужно время в учетной записи, и только вы этого хотите, тогда лучше не делать этого, а затем запрашивать у пользователя действие (например, выбрать часовой пояс). – gakhov

1

Вы можете запросить у пользователя текущий часовой пояс во время регистрации и сохранить его с помощью своих сведений о пользователе.

ActiveSupport (входит в состав Rails API) имеет отличный способ борьбы с часовыми поясами, вы можете конвертировать текущее время в другое время с помощью * in_time_zone *.

В качестве примера

Time.now.in_time_zone("America/Guyana") 
Time.now.in_time_zone(8) 

Где ключ TIME_ZONE можно найти с помощью этого API документа: http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

См TimeWithZone для получения дополнительной информации, http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html#method-i-in_time_zone.

Смежные вопросы