显示剩余时间与distance_of_time_in_words (注:该内容是一个提问标题,无需回答)

3

我希望在7天后,Items中的物品将被删除。我尝试过一些方法,但是还没有成功。

 <%= distance_of_time_in_words(item.created_at, item.created_at + 7.days) %> 

但是我得到的所有项目都是“7天”。有人能简单说明一下这个帮助方法是如何工作的吗?

1
所以你需要的是与当前时间的差异。所以你应该这样做:distance_of_time_in_words(Time.now, item.created_at + 7.days)。如果你尝试执行 2 - (2 + 7),它将始终返回 -7,并且永远不会改变。 - undefined
谢谢你的帮助,这个小比喻对我非常有帮助!非常感谢! - undefined
1个回答

6
让我们看一下文档,了解distance_of_time_in_words的作用:

distance_of_time_in_words(from_time, to_time = 0, options = {})
报告两个时间(Time、Date或DateTime对象或整数)之间的大致时间差。

因此,它报告第一个参数和第二个参数之间的时间差异。现在,您正在执行:
distance_of_time_in_words(item.created_at, item.created_at + 7.days)
item.created_atitem.created_at加上七天之间的区别始终是...七天 ;-)
我假设这是一些将在七天后被删除的内容?在这种情况下,您想要的是当前日期与创建日期加上七天之间的差异,可以使用以下方法获取:
distance_of_time_in_words(Time.now, item.created_at + 7.days)

是的,那就是我想要表达的意思,谢谢你。对于处理日期,我有点难以应付,所以这个方法让我头发都乱了。谢谢你的解释 :) - undefined
@MiguelAngelQuintana 是的,日期可能有些尴尬。但它们只是数字而已。许多计算机将日期存储为自1970年1月1日以来的秒数(当前为1458023724),当你说+ 7.days时,实际上只是进行了简单的加法运算:1458023724 + 86400 * 7(一天有86400秒,这是一个有用的数字需要记住),没有其他更多的操作。将其显示为"Tue Mar 15 07:36:24 CET 2016"或"5 days and 6 hours"只是为了我们这些可怜的人类而进行的格式化处理,就像将125秒显示为2:0553.31显示为€53,31一样... - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接