Ruby Time.now和其他日期

时间:2012-11-19 12:06:35

标签: ruby-on-rails ruby strftime

我需要在变量中获得三个日期

今天午夜以来,我有

  

t = Time.now.strftime(“%Y-%m-%d 00:00:01”)#2012-11-19 00:00:01

昨天午夜(即00:00:00至23:59:59)

  

y1 = 2012-11-18 00:00:01
  y2 = 2012-11-19 23:59:59

具体是y1&我需要创建y2变量作为在gem中使用的字符串。对ruby不熟悉我有点困惑,因为Time.yesterday似乎没有做我需要的东西

修改

为此,请务必包含

  

要求'active_support / all'

并确保为您的应用程序捆绑了gem。

用于:

@current   = (Time.now).beginning_of_day.utc.strftime("%Y-%m-%d")
@yesterday = (Time.now - 1.day).beginning_of_day.utc.strftime("%Y-%m-%d")
@everything = (Time.now - 2.day).end_of_day.utc.strftime("%Y-%m-%d")

4 个答案:

答案 0 :(得分:4)

你可以,

 t=Time.now
 y1=t-1.day
 y2=t+1.day

答案 1 :(得分:2)

t = Time.now
t - 1.day # => yesterday
t + 1.day # => tomorrow

答案 2 :(得分:1)

首先将t转换为日期,

t = t.to_date

t - 1.day # => yesterday
t + 1.day # => tomorrow

答案 3 :(得分:0)

由于您正在运行Rails,因此可以从ActiveSupport

获取帮助
1.day.ago.midnight
Time.new.beginning_of_day

您还应该考虑不使用2012-11-19 00:00:012012-11-19 23:59:59。 相反,您可以使用00:00:00并与> =或<进行比较取决于你想要达到的目标。如果您总是四舍五入到秒,那么2012-11-19 00:00:002012-11-19 23:59:59就可以了。