Я получаю строку из внешнего метода с указанием времени и даты, например "07/09/10 14:50"
, есть ли способ конвертировать это время в рубине в "Pacific US", зная время UTC? с изменениями, учтенными в дату? I. Если разница во времени приводит к тому, что день отличается.
Время конвертирования в UTC до Тихоокеанского времени
Ответ 1
Так как вы используете рельсы, у вас есть несколько вариантов. Я предлагаю прочитать эту статью, в которой говорится о часовых поясах.
Чтобы преобразовать в PST, оба из них - специфичные для рельсов методы. Не нужно повторно изобретать колесо:
time = Time.parse("07/09/10 14:50")
time.in_time_zone("Pacific Time (US & Canada)")
Надеюсь, что это поможет
UPDATE: рельсы могут попытаться стать умными и указать время, которое вы укажете в качестве строки в часовом поясе. Чтобы убедиться, что время анализирует как UTC, вы должны указать в строке:
time = Time.parse("07/09/10 14:50 UTC")
time.in_time_zone("Pacific Time (US & Canada)")
Ответ 2
Чтобы преобразовать из строковой формы в объект даты или времени, вам нужно использовать 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
Это чистый рубин, поэтому есть некоторые специфические для рельсов методы, которые вы могли бы использовать специально для этой задачи, но это должно помочь вам начать.
Ответ 3
требуется "время"
Если вы хотите, чтобы мирное время просто вычитало 25200 секунд из Time.new, существует разница в 7 часов между мирным временем и GMT.
t = Time.parse((Time.new-25200).to_s)
Затем используйте strftime для форматирования, но вы хотите, чтобы он выглядел.
ставит t.strftime( "% A% D at% I:% M% p" )