Ruby DateTime.Parse по местному времени - PullRequest
5 голосов
/ 07 мая 2011

У меня есть строка даты 20101129220021, поэтому я буду использовать

require 'date'
d = DateTime.parse('20101129220021')

Эта часть отлично работает, и я получаю дату, которая в UTC.

Мой вопрос: как я могу преобразовать это в мое местное время? Я пробовал много способов, таких как извлечение временной части с использованием d.to_time и манипулирование результатом, но это не сработало Насколько я знаю, DateTime объект неизменен. Могу ли я получить помощь?

Ответы [ 2 ]

4 голосов
/ 07 мая 2011
irb(main):001:0> require "date"
=> true
irb(main):002:0> d = DateTime.parse('20101129220021')
=> #<DateTime: 2010-11-29T22:00:21+00:00 (70719276007/28800,0/1,2299161)>
irb(main):003:0> d.to_time
=> 2010-11-30 00:00:21 +0200

ruby ​​1.9.2p180 (2011-02-18)

3 голосов
/ 07 мая 2011

Вы можете добавить рациональную дробь, основанную на часовом поясе, чтобы получить местное время.

require 'date'

# Make this whatever your zone is. Using UTC +0300 here.
ZONE = 3

d = DateTime.parse('20101129220021') + Rational(ZONE,24)

d.to_s # => "2010-11-30T01:00:21+00:00"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...