我有一种感觉,有人会指出另一个问题来解决这个问题,但我一直在寻找这个简单问题的运气.
我有一个带有datetime属性的Activerecord.它作为ActiveSupport返回:TimeWithZone.我知道我无法将它与DateTime.now进行比较,因为它不包含区域所以我需要使用Time.zone.说得通.
我想知道的是stylewise是否有一种"更清洁"的方法来做到这一点,而不是将结果减去86400?
这是我做的:
((Time.zone.now - myActiveRecord.visit_date)/86400).to_i
Run Code Online (Sandbox Code Playgroud)
工作,但似乎没有rubyish,我觉得我错过了一些东西.我应该进行铸造,比较或转换其他路线,还是这是在铁轨中执行此操作的典型方式?感谢任何提示或指向已涵盖此问题的链接.
谢谢
Jak*_*mpl 81
你可以做的一件事是让它更具可读性:
((Time.zone.now - myActiveRecord.visit_date) / 1.day).to_i
Run Code Online (Sandbox Code Playgroud)
编辑:
实际上你可以用以下方法摆脱一组括号:
(Time.zone.now - myActiveRecord.visit_date).to_i / 1.day
Run Code Online (Sandbox Code Playgroud)
Aar*_*ron 20
我知道这个问题有点过时但我在搜索类似问题时遇到了它.就我而言,我需要在宏观和微观尺度上了解整天的差异.
例如,我需要我的代码才能告诉我2010年12月31日是2012年1月1日之前的366天,而2010年12月31日23:59是距离2011年1月1日00:00的1天.上述方法在前者中起作用,但在后者的情况下,它表示它们相隔0天.
我最终做的是使用Ruby的Date类为我做数学.使用上面的代码我的方法如下所示:
(Time.zone.now.to_date - myActiveRecord.visit_date.to_date).to_i
这将适用于转换中Time或DateTime由于转换而产生的输入.另一种可能的解决方案是首先打电话beginning_of_day给每个Times或者DateTimes在我的情况下,会议记录很重要.
| 归档时间: |
|
| 查看次数: |
28973 次 |
| 最近记录: |