我有两个日期:start date
和end date
。我想计算end date
和start date
之间的天数。如果start date
为1-11-2011
,end date
为2-11-2012
,而我放start date - end date
,则会将天数显示为1
,并且不计算月份和年份。我怎么能用红宝石做到这一点?请帮助我。
答案 0 :(得分:5)
require "date"
(
Date.strptime("2-11-2012", "%m-%d-%Y") -
Date.strptime("1-11-2011", "%m-%d-%Y")
).to_i + 1
# => 397
答案 1 :(得分:4)
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)格式,并且只能根据需要将它们转换为本地化表示,以提高清晰度。
答案 2 :(得分:0)
试试这个。
$content = "Someone purchase your picture".<br><br>;
foreach ($request->input('pic') as $key => $value) {
$content .= "$key : $value".<br>;
}
这将照顾好几天和几小时 例如
time_ago_in_words(pending_requests.created_at)
和
about 17 hours ago