Time.zone
имеет метод parse
, который также возвращает ActiveSupport::TimeWithZone
:
>> Time.zone.parse "October 4 1984"
=> Thu, 04 Oct 1984 00:00:00 EDT -04:00
Чтобы заставить его играть с Chronic, может быть эта статья может помочь?Если бы вы, например, вставили метод parse_with_chronic
в ActiveSupport::TimeZone
, вы можете переписать свой метод:
def set_dates
unless self.natural_date.blank? || Time.zone.parse_with_chronic(self.natural_date).blank?
# check if we are dealing with a date or a date + time
if time_provided?(self.natural_date)
self.date = nil
self.time = Time.zone.parse_with_chronic(self.natural_date)
else
self.date = Time.zone.parse_with_chronic(self.natural_date).to_date
self.time = nil
end
end
end