代码之家  ›  专栏  ›  技术社区  ›  Nick

计算活动天数差异upport:TimeWithZone in 最“红润”的风格?

  •  37
  • Nick  · 技术社区  · 15 年前

    我有一种感觉,有人会给我指出另一个问题来回答这个问题,但我一直在寻找这个简单的问题没有运气。

    我想知道的是stylewise有没有一种“更干净”的方法来做这件事,而不是将结果除以86400?

    我是这样做的:

    ((Time.zone.now - myActiveRecord.visit_date)/86400).to_i
    

    工作,但似乎没有红色,我觉得我错过了一些东西。我应该铸造,比较或转换一些其他路线,还是这真的是在rails中的典型方式?感谢任何提示或链接到一个问题,已经涵盖了这一点。

    3 回复  |  直到 15 年前
        1
  •  87
  •   Jakub Hampl    13 年前

    要使其更具可读性,您可以做的一件事是:

    ((Time.zone.now - myActiveRecord.visit_date) / 1.day).to_i
    

    编辑:

    实际上,你可以去掉一组括号:

    (Time.zone.now - myActiveRecord.visit_date).to_i / 1.day
    
        2
  •  20
  •   Aaron    12 年前

    例如,我需要我的代码能够告诉我2010年12月31日是2012年1月1日前366天,2010年12月31日23:59是2011年1月1日00:00前1天。上述方法在前者中有效,但在后者中,它们表示相隔0天。

    Date 上课帮我做数学。使用上面的代码,我的方法如下所示:

    (Time.zone.now.to_date - myActiveRecord.visit_date.to_date).to_i

    这将与中的输入一起工作 Time DateTime 由于转换。另一个可能的解决办法是先打电话 beginning_of_day 在每个 Times DateTimes 但对我来说,会议记录很重要。

        3
  •  4
  •   jamesconant    10 年前

    Rails实际上有一个内置的方法来处理这类事情。

    结帐 #time_ago_in_words

    ((Time.zone.now - myActiveRecord.visit_date)/86400).to_i

    time_ago_in_words(myActiveRecord.visit_date)