Преобразование даты-времени Ruby on Rails 5 в миллисекунды с учетом часового пояса - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь преобразовать дату и время для рельсов в миллисекунды, но в тот момент, когда я звоню .strftime или .to_i, он игнорирует назначенный ему часовой пояс и считывает часовой пояс системы

system timezone: Europe/London # currently is +01:00 due to BST
# application.rb
config.time_zone = 'Europe/Athens' # +03:00
stored in database as GMT: 2019-04-19 10:00:00.000000

start_date: schedule.start_date,
to_datetime: schedule.start_date.to_datetime,
strftime: schedule.start_date.to_datetime.strftime('%Q').to_i,
start_date: "2019-04-19T13:00:00.000+03:00",
to_datetime: "2019-04-19T13:00:00.000+03:00",
strftime: 1555668000000, # 2019-04-19T11:00:00.000+01:00

он корректно отображается в виде

<%= schedule.start_date %>
# 13:00:00 19 Apr 2019
irb(main):004:0> Time.at(1555668000)
=> 2019-04-19 11:00:00 +0100

Прошу прощения, если на этот вопрос уже был дан ответ, но я просто не смог найти удовлетворительное решение.

1 Ответ

0 голосов
/ 21 апреля 2019

я закончил тем, что делал что-то вроде этого

system timezone: UTC
# application.rb
config.time_zone = 'UTC'

Затем я реализовал переключатель часовых поясов, подобный этому http://railscasts.com/episodes/106-time-zones-revised

dst = Time.zone.now.dst?
offset = Time.zone.utc_offset
offset += 3600 if dst

ts = (schedule.start_date.to_i + offset) * 1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...