我正在尝试针对特定时期进行报告,支持的时期是:
start = DateTime.now.beginning_of_day; end = start.end_of_day
start = DateTime.now.beginning_of_week; end = start.end_of_week
DateTime.now
)
cweek
;第一个双周的开始应该是本月的第一天,第二个双周的结束应该是本月的最后一天。两者之间的划分日期应该是该月的总天数除以 2,向上取整(即如果有 31 天,则第二个双周将从该月的 15 日开始,而不是从 14 日开始)。start = DateTime.now.beginning_of_month; end = start.end_of_month
start = (DateTime.now - 1.month).beginning_of_month; end = start.end_of_month
start = DateTime.now.beginning_of_year --> end = start.end_of_year
我无法根据当前日期(假设)计算粗体日期范围DateTime.now
。
如何计算相对于当前日期的双周和季度周期DateTime.now
?
对于 2018 年 5 月 7 日 (5/7/2018) 的日期:
5/1/2018
到5/15/2018
4/1/2018
到6/30/2018
对于日期 2020 年 2 月 29 日 (2/29/2020),闰年:
2/15/2018
到2/29/2018
1/1/2018
到3/31/2018
那这个呢:
这个双周:
def bi_week_limits_for(date)
days_in_month = Time.days_in_month(date.month, date.year)
# this will round down. 30/31-day months will output 15. 28 / 29-day will output 14. Adjust as per your requirements
middle_day = days_in_month / 2
if date.day <= middle_day
[date.beginning_of_month, date.change(day: middle_day)]
else
[date.change(day: middle_day + 1), date.end_of_month]
end
end
在我的控制台中:
pry(main)> bi_week_limits_for Date.parse('29/2/2020')
=> [Sat, 15 Feb 2020, Sat, 29 Feb 2020]
pry(main)> bi_week_limits_for Date.parse('7/5/2018')
=> [Tue, 01 May 2018, Tue, 15 May 2018]
本季度:
def bi_week_limits_for(date)
[date.beginning_of_quarter, date.end_of_quarter]
end
在我的控制台
pry(main)> date = Date.parse('7/5/2018')
=> Mon, 07 May 2018
pry(main)> quarter_limits_for date
=> [Sun, 01 Apr 2018, Sat, 30 Jun 2018]
pry(main)> date = Date.parse '29/2/2020'
=> Sat, 29 Feb 2020
pry(main)> quarter_limits_for date
=> [Wed, 01 Jan 2020, Tue, 31 Mar 2020]
参考:https : //apidock.com/rails/DateAndTime/Calculations/beginning_of_quarter
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句