Как получить диапазон ActiveSupport :: TimeWithZone из столбца tstzrange? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть tstzrange столбец . Rails переводит его в Range из Time объектов, которые теряют информацию о часовом поясе. Я хотел бы Range из ActiveSupport::TimeWithZone объектов. Как я могу это сделать?

Кроме того, как я могу проверить, охватывает ли tstzrange ровно день в текущем часовом поясе и какой день?

1 Ответ

0 голосов
/ 03 марта 2020

Из документов ActiveRecord :: Timestamp ...

Вы также можете добавить базу данных с указанием c типов, поддерживающих часовой пояс. Например, для PostgreSQL:

ActiveRecord::Base.time_zone_aware_types += [:tsrange, :tstzrange]

in_time_zone превратит Time в ActiveSupport::TimeWithZone в часовом поясе приложения. Диапазон времени можно превратить в диапазон ActiveSupport :: TimeWithZone, например:

range = Range.new(
  tstzrange.begin.in_time_zone,
  tstzrange.end.in_time_zone,
  # Taking care to preserve whether the range is inclusive or exclusive.
  tstzrange.exclude_end?
)
...