Подтвердить что ты не робот

Время конвертирования в UTC до Тихоокеанского времени

Я получаю строку из внешнего метода с указанием времени и даты, например "07/09/10 14:50", есть ли способ конвертировать это время в рубине в "Pacific US", зная время UTC? с изменениями, учтенными в дату? I. Если разница во времени приводит к тому, что день отличается.

4b9b3361

Ответ 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" )