/ / Як отримати конкретний час в конкретному часовому поясі в Rails - ruby-on-rails, часовий пояс

Як отримати певний час у певному часовому поясі в Rails - рубінах на рейках, часовому поясі

Дозвольте мені сказати, що мені потрібно отримати об'єкт Часу з 3 ранку в часовій зоні Берліна. Я не можу зрозуміти це.

якщо я,

Time.parse("03:00am").in_time_zone("Berlin")

Я отримую 3 ранку в поточному часовому поясі, перетвореному в часовий пояс Берліну. Але мені потрібно 3 ранку в часовій зоні Берліна.

Відповіді:

8 для відповіді № 1

Спробуйте використовувати Time.use_zone для тимчасового встановлення часового поясу

> Time.use_zone("Berlin") do
>     t = Time.zone.parse("3:00am")
> end
=> Thu, 09 Aug 2012 03:00:00 CEST +02:00

0 для відповіді № 2

Спробуйте це,

Time.zone = "Berlin"
Time.zone.parse("03:00am")

0 для відповіді № 3

Я мав ту ж саму проблему і не хотів змінювати Time.zone, оскільки він зберігається в багатьох запитах.

Трюк (і безпечніший підхід, оскільки це не такзмінити будь-які системні налаштування, такі як Time.zone), щоб помістити час (зону AND) у формат, який може використовувати Time.parse. Ось приклад для американського Тихоокеанського часу - замість цього вставте потрібний часовий пояс у форматі TZ:

Time.parse ("2012-10-1 8:00:00 Тихоокеанський час (США та Канада)")