在 Sinatra 中查找两个日期之间的月数(2018-05-23 和 2018-06-22)
Find number of months between two Dates in Sinatra (2018-05-23 & 2018-06-22)
我需要找到两个日期之间的月数,即 2018-05-23 和 2018-06-22。
提供的日期相差30天。然而,他们是2个月。那么我们该怎么做呢?
我需要按正确的升序输出日期。
我试过了,
diffMonth = (date2_year.to_i * 12 + date2_month.to_i) - (date1_year.to_i * 12 + date2_month.to_i)
但是,它显示的差异是一个月。
我也试过这个解决方案 difference of month between 2 dates,这个 link 的结果也是 1 个月。
我最初的问题是按升序显示日期。我正在使用此方法对日期进行排序,但如果日期在一个月内,则它可以正常工作,但如果在 2 个月之间,则显示顺序错误。
arr.sort_by { |h| a = h[:date].to_s }.reverse
我应该在这里添加我的输出,这是当日期如上所述时。
[{
"date": "Jun-01",
"data": 0
}, {
"date": "Jun-02",
"data": 0
}, {
"date": "Jun-03",
"data": 0
}, {
"date": "Jun-04",
"data": 0
}, {
"date": "Jun-05",
"data": 0
}, {
"date": "Jun-06",
"data": 0
}, {
"date": "Jun-07",
"data": 0
}, {
"date": "Jun-08",
"data": 0
}, {
"date": "Jun-09",
"data": 0
}, {
"date": "Jun-10",
"data": 0
}, {
"date": "Jun-11",
"data": 0
}, {
"date": "Jun-12",
"data": 0
}, {
"date": "Jun-13",
"data": 0
}, {
"date": "Jun-14",
"data": 0
}, {
"date": "Jun-15",
"data": 0
}, {
"date": "Jun-16",
"data": 0
}, {
"date": "Jun-17",
"data": 0
}, {
"date": "Jun-18",
"data": 0
}, {
"date": "Jun-19",
"data": 0
}, {
"date": "Jun-20",
"data": 0
}, {
"date": "Jun-21",
"data": 0
}, {
"date": "Jun-22",
"data": 0
}, {
"date": "May-23",
"data": 0
}, {
"date": "May-24",
"data": 1
}, {
"date": "May-25",
"data": 0
}, {
"date": "May-26",
"data": 0
}, {
"date": "May-27",
"data": 0
}, {
"date": "May-28",
"data": 0
}, {
"date": "May-29",
"data": 0
}, {
"date": "May-30",
"data": 0
}, {
"date": "May-31",
"data": 0
}]
如果日期在一个月内,则输出为
[{
"date": "Jun-01",
"data": 0
}, {
"date": "Jun-02",
"data": 0
}, {
"date": "Jun-03",
"data": 0
}, {
"date": "Jun-04",
"data": 0
}, {
"date": "Jun-05",
"data": 0
}, {
"date": "Jun-06",
"data": 0
}, {
"date": "Jun-07",
"data": 0
}, {
"date": "Jun-08",
"data": 0
}, {
"date": "Jun-09",
"data": 0
}, {
"date": "Jun-10",
"data": 0
}, {
"date": "Jun-11",
"data": 0
}, {
"date": "Jun-12",
"data": 0
}, {
"date": "Jun-13",
"data": 0
}, {
"date": "Jun-14",
"data": 0
}, {
"date": "Jun-15",
"data": 0
}, {
"date": "Jun-16",
"data": 0
}, {
"date": "Jun-17",
"data": 0
}, {
"date": "Jun-18",
"data": 0
}, {
"date": "Jun-19",
"data": 0
}, {
"date": "Jun-20",
"data": 0
}, {
"date": "Jun-21",
"data": 0
}, {
"date": "Jun-22",
"data": 0
}, {
"date": "Jun-23",
"data": 0
}, {
"date": "Jun-24",
"data": 0
}, {
"date": "Jun-25",
"data": 0
}, {
"date": "Jun-26",
"data": 0
}, {
"date": "Jun-27",
"data": 0
}, {
"date": "Jun-28",
"data": 0
}, {
"date": "Jun-29",
"data": 0
}, {
"date": "Jun-30",
"data": 0
}]
否则我们能否正确排序?
如果你能控制日期的生成方式,最好也有年份数据,如果你不关心年份数据,你可以使用这个
arr.sort_by {|d| Date.parse(d[:date])}
希望对您有所帮助。
我需要找到两个日期之间的月数,即 2018-05-23 和 2018-06-22。
提供的日期相差30天。然而,他们是2个月。那么我们该怎么做呢?
我需要按正确的升序输出日期。
我试过了,
diffMonth = (date2_year.to_i * 12 + date2_month.to_i) - (date1_year.to_i * 12 + date2_month.to_i)
但是,它显示的差异是一个月。
我也试过这个解决方案 difference of month between 2 dates,这个 link 的结果也是 1 个月。
我最初的问题是按升序显示日期。我正在使用此方法对日期进行排序,但如果日期在一个月内,则它可以正常工作,但如果在 2 个月之间,则显示顺序错误。
arr.sort_by { |h| a = h[:date].to_s }.reverse
我应该在这里添加我的输出,这是当日期如上所述时。
[{
"date": "Jun-01",
"data": 0
}, {
"date": "Jun-02",
"data": 0
}, {
"date": "Jun-03",
"data": 0
}, {
"date": "Jun-04",
"data": 0
}, {
"date": "Jun-05",
"data": 0
}, {
"date": "Jun-06",
"data": 0
}, {
"date": "Jun-07",
"data": 0
}, {
"date": "Jun-08",
"data": 0
}, {
"date": "Jun-09",
"data": 0
}, {
"date": "Jun-10",
"data": 0
}, {
"date": "Jun-11",
"data": 0
}, {
"date": "Jun-12",
"data": 0
}, {
"date": "Jun-13",
"data": 0
}, {
"date": "Jun-14",
"data": 0
}, {
"date": "Jun-15",
"data": 0
}, {
"date": "Jun-16",
"data": 0
}, {
"date": "Jun-17",
"data": 0
}, {
"date": "Jun-18",
"data": 0
}, {
"date": "Jun-19",
"data": 0
}, {
"date": "Jun-20",
"data": 0
}, {
"date": "Jun-21",
"data": 0
}, {
"date": "Jun-22",
"data": 0
}, {
"date": "May-23",
"data": 0
}, {
"date": "May-24",
"data": 1
}, {
"date": "May-25",
"data": 0
}, {
"date": "May-26",
"data": 0
}, {
"date": "May-27",
"data": 0
}, {
"date": "May-28",
"data": 0
}, {
"date": "May-29",
"data": 0
}, {
"date": "May-30",
"data": 0
}, {
"date": "May-31",
"data": 0
}]
如果日期在一个月内,则输出为
[{
"date": "Jun-01",
"data": 0
}, {
"date": "Jun-02",
"data": 0
}, {
"date": "Jun-03",
"data": 0
}, {
"date": "Jun-04",
"data": 0
}, {
"date": "Jun-05",
"data": 0
}, {
"date": "Jun-06",
"data": 0
}, {
"date": "Jun-07",
"data": 0
}, {
"date": "Jun-08",
"data": 0
}, {
"date": "Jun-09",
"data": 0
}, {
"date": "Jun-10",
"data": 0
}, {
"date": "Jun-11",
"data": 0
}, {
"date": "Jun-12",
"data": 0
}, {
"date": "Jun-13",
"data": 0
}, {
"date": "Jun-14",
"data": 0
}, {
"date": "Jun-15",
"data": 0
}, {
"date": "Jun-16",
"data": 0
}, {
"date": "Jun-17",
"data": 0
}, {
"date": "Jun-18",
"data": 0
}, {
"date": "Jun-19",
"data": 0
}, {
"date": "Jun-20",
"data": 0
}, {
"date": "Jun-21",
"data": 0
}, {
"date": "Jun-22",
"data": 0
}, {
"date": "Jun-23",
"data": 0
}, {
"date": "Jun-24",
"data": 0
}, {
"date": "Jun-25",
"data": 0
}, {
"date": "Jun-26",
"data": 0
}, {
"date": "Jun-27",
"data": 0
}, {
"date": "Jun-28",
"data": 0
}, {
"date": "Jun-29",
"data": 0
}, {
"date": "Jun-30",
"data": 0
}]
否则我们能否正确排序?
如果你能控制日期的生成方式,最好也有年份数据,如果你不关心年份数据,你可以使用这个
arr.sort_by {|d| Date.parse(d[:date])}
希望对您有所帮助。