簡體   English   中英

日期之間的天數

[英]Number of days between dates

我有兩個日期: start dateend date 我想計算end datestart date之間的天數。 如果start date1-11-2011end date2-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM