基本上我想在去年获得一个随机的日期时间:
rand(1.year).ago #=> Sun, 22 Sep 2013 18:37:44 UTC +00:00 (example)
Run Code Online (Sandbox Code Playgroud)
但是,如何指定或限制时间?例如:
Sun, 22 Sep 2013 18:00:00 UTC +00:00
Sat, 02 Nov 2013 10:00:00 UTC +00:00
Fri, 12 Apr 2013 21:00:00 UTC +00:00
Run Code Online (Sandbox Code Playgroud) 如何从一个范围返回一系列日期和小时?到目前为止,我尝试过:
(48.hours.ago..Time.now.utc).map { |time| { :hour => time.hour } }.uniq
Run Code Online (Sandbox Code Playgroud)
返回:
[{:hour=>1}, {:hour=>2}, {:hour=>3}, {:hour=>4}, {:hour=>5}, {:hour=>6}, {:hour=>7}, {:hour=>8}, {:hour=>9}, {:hour=>10}, {:hour=>11}, {:hour=>12}, {:hour=>13}, {:hour=>14}, {:hour=>15}, {:hour=>16}, {:hour=>17}, {:hour=>18}, {:hour=>19}, {:hour=>20}, {:hour=>21}, {:hour=>22}, {:hour=>23}, {:hour=>0}]
Run Code Online (Sandbox Code Playgroud)
不理想,因为它每秒迭代一次.这需要很长时间.我收到几条警告信息说:
/Users/Chris/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.2.2/lib/active_support/time_with_zone.rb:328: warning: Time#succ is obsolete; use time + 1
Run Code Online (Sandbox Code Playgroud)
我试图返回类似的东西:
[{:day => 25, :hour=>1}, {:day => 25, :hour=>2}, {:day => 25, :hour=>3}, {:day => 25, :hour=>4} ... {:day => 26, :hour=>1}, {:day => 26, :hour=>2}, {:day => 26, :hour=>3}, {:day => 26, :hour=>4}]
Run Code Online (Sandbox Code Playgroud) 更新:我正在更新问题以反映完整的解决方案.使用下面提到的time_diff gem Brett,以下代码有效.
码:
cur_time = Time.now.strftime('%Y-%m-%d %H:%M')
Time.diff(Time.parse('2011-08-12 09:00'), Time.parse(cur_time))
Run Code Online (Sandbox Code Playgroud)
谢谢,布雷特.
我有一个约会表,可以节省2次.开始和结束.我希望以15分钟的步骤显示所有约会.例如,上午10点/上午11点,现在在我的视图中显示10.15,10.30,10.45!感谢建议!
-@appointment.each do |form|
=form.date
=form.start_time
=form.end_time
Run Code Online (Sandbox Code Playgroud)