红宝石在轨道 – 可以使用慢性损害你的时间感吗?

哈哈..

我使用Chronic来解析用户在日历中添加的时间。在代码的工作和实现正确的时间,最终的结果是,如果用户添加一个时间,那么它没有日期,并且因为它没有日期,它不会显示在结果中。有任何想法吗?

def set_dates
  unless self.natural_date.blank? || Chronic.parse(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 = Chronic.parse(self.natural_date)
    else
      self.date = Chronic.parse(self.natural_date).to_date
      self.time = nil
    end
  end

  unless self.natural_end_date.blank? || Chronic.parse(self.natural_end_date).blank?
    # check if we are dealing with a date or a date + time
    if time_provided?(self.natural_end_date)
      self.end_date = nil
      self.end_time = Chronic.parse(self.natural_end_date)
    else
      self.end_date = Chronic.parse(self.natural_end_date).to_date
      self.end_time = nil
    end
  end
end

编辑:

这里是time_provided?方法:

def time_provided?(natural_date_string)
  date_span = Chronic.parse(natural_date_string, :guess => false)
  (date_span.last - date_span.first).to_i == 1
end
首先,我不确定你在问什么,因为它看起来像代码故意做你所描述的…当有时间提供,日期字段分配为零。我不认为是慢性是责怪,因为这是你的代码如何工作。

不知道你的设计(为什么有单独的日期和时间字段),字段的类型等,我建议开始一个小kludge像这样:

if time_provided?(self.natural_date)
  self.time = Chronic.parse(self.natural_date)
  self.date = self.time.to_date

要么:

self.end_date = Chronic.parse(self.natural_date).to_date
if time_provided?(self.natural_date)
  self.time = Chronic.parse(self.natural_date)
end

或者也许问题在你提供的代码之外:在负责“因为它没有日期,它不会显示在结果”行为的部分?也许你应该使条件更灵活吗?

http://stackoverflow.com/questions/2821813/can-using-chronic-impair-your-sense-of-time

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:红宝石在轨道 – 可以使用慢性损害你的时间感吗?