我如何计算这两个日期之间的天数?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Run Code Online (Sandbox Code Playgroud)
And*_*nce 197
使用Date(和DateTime)类(end_date - start_date).to_i可以获得天数差异.
lee*_*lee 103
假设end_date和start_date都是一流的ActiveSupport::TimeWithZoneRails中,那么你可以使用:
(end_date.to_date - start_date.to_date).to_i
Run Code Online (Sandbox Code Playgroud)
Jus*_*ick 33
Rails有一些内置的帮助程序,可以为您解决此问题.要记住的一件事是,这是Actionview Helpers的一部分,因此它们不能直接从控制台上获得.
试试这个
<% start_time = "2012-03-02 14:46:21 +0100" %>
<% end_time = "2012-04-02 14:46:21 +0200" %>
<%= distance_of_time_in_words(start_time, end_time) %>
"about 1 month"
Run Code Online (Sandbox Code Playgroud)
tha*_*ent 31
我在几秒钟内得到了结果,所以这对我有用:
(Time.now - self.created_at) / 86400
Run Code Online (Sandbox Code Playgroud)
a14*_*14m 23
获取时间范围内的天数(仅计算所有天数)
(start_date..end_date).count
(start_date..end_date).to_a.size
#=> 32
Run Code Online (Sandbox Code Playgroud)
获取2个日期之间的天数
(start_date...end_date).count
(start_date...end_date).to_a.size
#=> 31
Run Code Online (Sandbox Code Playgroud)
Yur*_*sev 12
之前的答案(截止日期)都没有给出两个日期之间天数的正确差异.
最接近的一个是由那个人来做.一个完整的答案会转换to_i然后除以:
(Time.now.to_i - 23.hours.ago.to_i) / 86400
>> 0
(Time.now.to_i - 25.hours.ago.to_i) / 86400
>> 1
(Time.now.to_i - 1.day.ago.to_i) / 86400
>> 1
Run Code Online (Sandbox Code Playgroud)
在问题的具体示例中,Date如果过去的时间是相关的,则不应该解析.请Time.parse改用.
小智 9
很晚了,但可能对其他人有帮助:
end_date.mjd - start_date.mjd
Run Code Online (Sandbox Code Playgroud)
https://apidock.com/ruby/Date/mjd
提示:这仅适用于日期对象,不适用于时间对象。
要获得两个日期(DateTime对象)之间的整天数:
((end_at - start_at).to_f / 1.day).floor
Run Code Online (Sandbox Code Playgroud)
目前我所看到的始终有效的最佳解决方案是使用以下模式:
(end_date.beginning_of_day - Time.now.utc.beginning_of_day).seconds.in_days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95686 次 |
| 最近记录: |