[英]Number of days between dates
我有兩個日期: start date
和end date
。 我想計算end date
和start date
之間的天數。 如果start date
為1-11-2011
, end date
為2-11-2012
,我把start date - end date
,它會顯示的天數為1
,並且不會算幾個月甚至幾年。 如何在紅寶石中做到這一點? 請幫助我。
require "date"
(
Date.strptime("2-11-2012", "%m-%d-%Y") -
Date.strptime("1-11-2011", "%m-%d-%Y")
).to_i + 1
# => 397
require 'date'
start_date = Date.parse('1-11-2011')
# => #<Date: 2011-11-01 … >
end_date = Date.parse('2-11-2012')
# => #<Date: 2012-11-02 … >
inclusive_days_in_range = (start_date .. end_date).count
# => 368
或者,如果您關心效率(快兩個數量級):
inclusive_days_in_range = (end_date - start_date) + 1
# => 368
請注意,如果您使用Date.parse
,則給定的日期字符串(如您的日期字符串)將被解釋為以日期開頭,之后是月份和年份。 如果那不是您想要的,則即使我不知道地球上有哪個國家會采用傳統的日期格式,也必須使用Date.strptime
方法手動指定日期格式。 為了清楚起見,避免字符串解析,您還可以通過以下方式初始化Date對象:
Date.new(2012, 1, 11)
另一個好主意是在應用程序內部使用ISO-8601 (YYYY-MM-DD)格式,僅在需要時將其轉換為本地化表示形式,以提高清晰度。
嘗試這個。
time_ago_in_words(pending_requests.created_at)
這將花費數天和數小時,例如
about 17 hours ago
和
3 days ago
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.