use*_*ser 6 ruby time datetime ruby-on-rails
如何获得时差 days,hours,mins
我想做
datetime_A - datetime_B
Run Code Online (Sandbox Code Playgroud)
datetime_A =星期六,2014年1月4日07:00:13 +0000
datetime_B =星期五,2014年1月3日01:09:46 +0000
它给我的回报是什么(35809/28800),bdw是什么意思?
我需要 1day,5h,23min
怎么办?
Dip*_*pta 13
您需要在rails应用程序中添加帮助程序以实现此目的.Ruby没有为此提供任何直接的方法.下面是使用ruby 2.1.0的日期操作.
2.1.0 :021 > a_date_time = DateTime.now
=> Fri, 26 Dec 2014 16:39:30 +0530 # First Date
2.1.0 :022 > b_date_time = DateTime.now-20
=> Sat, 06 Dec 2014 16:40:03 +0530 # Second Date
2.1.0 :023 > (a_date_time - b_date_time).to_i
=> 19 # Direct date difference
2.1.0 :024 > Seconds = ((a_date_time - b_date_time)*24*60*60).to_i
=> 1727966 # Seconds between two dates
2.1.0 :025 > sec = Seconds % 60
=> 26 # Second diffence to print
2.1.0 :026 > Minutes = Seconds / 60
=> 28799 # Minutes between two dates
2.1.0 :027 > min = Minutes % 60
=> 59 # Minute diffence to print
2.1.0 :028 > Hours = Minutes / 60
=> 479 # Hours between two dates
2.1.0 :029 > hour = Hours % 24
=> 23 #Hour diffence to print
2.1.0 :030 > Days = Hours / 24
=> 19 # Days between two dates
2.1.0 :032 > Days.to_s + 'Days, ' + hour.to_s + 'Hours, '+ min.to_s + 'Mins, ' + sec.to_s + 'Secs'
=> "19Days, 23Hours, 59Mins, 26Secs" # Desired output
Run Code Online (Sandbox Code Playgroud)
我喜欢使用宝石 time_diff
https://github.com/abhidsm/time_diff
这是一个如何工作的例子
Time.diff(Time.parse('2011-03-06'), Time.parse('2011-03-07'))
# => {:year => 0, :month => 0, :week => 0, :day => 1, :hour => 0, :minute => 0, :second => 0, :diff => '1 day and 00:00:00'}
Run Code Online (Sandbox Code Playgroud)