Преобразование Времени в UTC к тихоокеанскому времени

Я получаю строку из внешнего метода со временем и датой как так "07/09/10 14:50" есть ли какой-либо способ, которым я могу преобразовать то время в рубине к 'Тихоокеанскому американскому' времени, зная его время 'UTC'? с изменениями, составляемыми на дате? Т.е. если разница во времени заканчивается в день, будучи отличающейся.

15
задан Nakilon 17 June 2015 в 07:47
поделиться

2 ответа

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

Для преобразования в PST оба метода специфичны для рельсов. Нет необходимости заново изобретать колесо:

time = Time.parse("07/09/10 14:50")
time.in_time_zone("Pacific Time (US & Canada)")

Надеюсь, это поможет

ОБНОВЛЕНИЕ: рельсы могут попытаться стать умными и дать время, указанное в качестве строки, часовой пояс. Чтобы убедиться, что время анализируется как UTC, следует указать в строке:

time = Time.parse("07/09/10 14:50 UTC")
time.in_time_zone("Pacific Time (US & Canada)")
42
ответ дан 1 December 2019 в 00:18
поделиться

Для преобразования из строковой формы в объект даты или времени нужно использовать strptime

require 'date'
require 'time'

my_time_string = "07/09/10 14:50"
to_datetime = DateTime.strptime(my_time_string, "%m/%d/%y %H:%M")    

utc_time = Time.parse(to_datetime.to_s).utc
pacific_time = utc_time + Time.zone_offset("PDT")

puts utc_time
puts pacific_time

Это чистый ruby, поэтому, скорее всего, есть методы, специфичные для rails, которые можно использовать специально для этой задачи, но это должно помочь вам начать.

14
ответ дан 1 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

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