给定一个时间戳,如何确定几周前?

时间:2017-09-20 03:00:18

标签: ruby-on-rails ruby ruby-on-rails-5

我希望返回自我的应用中创建用户以来的周数。

我的模型是User.rb(id,created_at)

鉴于user.created_at

2.4.0 :008 > user.created_at
 => Mon, 14 Aug 2017 15:51:23 UTC +00:00 

我该怎样做:user.created_at.weeks_ago,它返回一个整数,表示自用户创建以来的周数?

2 个答案:

答案 0 :(得分:2)

如果你只是想建立一个人性化的字符串,我相信time_ago_in_words就是你所追求的。

https://apidock.com/rails/ActionView/Helpers/DateHelper/time_ago_in_words

否则,我会诉诸以下内容:

(Time.new - user.created_at) / 1.week

如果您想要更优雅的解决方案,Subtract dates in Ruby and get the difference in minutes会提及the Time Difference gem for Ruby

e.g。

TimeDifference.between(user.created_at.to_time, Time.now).in_weeks

答案 1 :(得分:1)

我会用:

Time.current
 => Wed, 20 Sep 2017 03:56:15 UTC +00:00 

然后

((Time.current - person.created_at)/604800).to_i

减法为您提供秒数,然后除以604800,这是一周内的秒数。