Ruby(/Rails) 日期 - 每两周和每季度的 DateTime 范围

克里斯·西里菲斯

我正在尝试针对特定时期进行报告,支持的时期是:

  • “今天”: 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
  • 本季度”:一年中四个 3 个月期间中的每一个,即季度。例如:从 1/1/1999 到 3/31/1999 或从 10/1/2000 到 12/31/2000。
  • “今年”= start = DateTime.now.beginning_of_year --> end = start.end_of_year

我无法根据当前日期(假设计算粗体日期范围DateTime.now

如何计算相对于当前日期的双周和季度周期DateTime.now

预期输出

对于 2018 年 5 月 7 日 (5/7/2018) 的日期:

  • 这个双周”应该是5/1/20185/15/2018
  • 本季度”应该是4/1/20186/30/2018

对于日期 2020 年 2 月 29 日 (2/29/2020),闰年:

  • 这个双周”应该是2/15/20182/29/2018
  • 本季度”应该是1/1/20183/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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从基于日期范围和表名的多表中选择数据(每季度)

来自分类Dev

每季度日期范围的总金额

来自分类Dev

Oracle-查找每月,每季度和每年的日期

来自分类Dev

是否有任何DateTime库支持Java的一年中的每季度和每周的某周?

来自分类Dev

范围日期,直到日期+周

来自分类Dev

datetime:ValueError:日期超出月份范围

来自分类Dev

基于年份和季度的日期范围

来自分类Dev

jQuery获取季度的日期范围

来自分类Dev

jQuery获取季度的日期范围

来自分类Dev

每季度2个日期之间的差额

来自分类Dev

每周,每月,每季度以php为单位备份日期

来自分类Dev

如何创建两个日期范围之间的周/月/季度列表

来自分类Dev

如何在MySQL中根据任务开始日期和结束日期计算每季度的值总和?

来自分类Dev

使用DATETIME MySQL查询日期之间的时间范围

来自分类Dev

创建一种从JSON datetime搜索日期范围的方法

来自分类Dev

使用DATETIME MySQL查询日期之间的时间范围

来自分类Dev

将nvarchar转换为datetime以进行日期范围查询

来自分类Dev

创建一种从JSON datetime搜索日期范围的方法

来自分类Dev

PHP DateTime 输出范围内的日期数组

来自分类Dev

日期范围中的开始和结束日期

来自分类Dev

日期范围中的开始和结束日期

来自分类Dev

给定季度号和年份,如何找到日期范围?

来自分类Dev

SQL:从多个开始日期和结束日期获取范围日期

来自分类Dev

如何从“日期”-2周和“日期” + 2周中筛选日期范围

来自分类Dev

python datetime和日期比较

来自分类Dev

python datetime和日期比较

来自分类Dev

我每两周(十四)个日期,我希望根据交易日期和到期日将 op 作为 14 个日期和金额

来自分类Dev

将日期范围转换为周和月的数组

来自分类Dev

GROUP BY日期范围日期

Related 相关文章

  1. 1

    如何从基于日期范围和表名的多表中选择数据(每季度)

  2. 2

    每季度日期范围的总金额

  3. 3

    Oracle-查找每月,每季度和每年的日期

  4. 4

    是否有任何DateTime库支持Java的一年中的每季度和每周的某周?

  5. 5

    范围日期,直到日期+周

  6. 6

    datetime:ValueError:日期超出月份范围

  7. 7

    基于年份和季度的日期范围

  8. 8

    jQuery获取季度的日期范围

  9. 9

    jQuery获取季度的日期范围

  10. 10

    每季度2个日期之间的差额

  11. 11

    每周,每月,每季度以php为单位备份日期

  12. 12

    如何创建两个日期范围之间的周/月/季度列表

  13. 13

    如何在MySQL中根据任务开始日期和结束日期计算每季度的值总和?

  14. 14

    使用DATETIME MySQL查询日期之间的时间范围

  15. 15

    创建一种从JSON datetime搜索日期范围的方法

  16. 16

    使用DATETIME MySQL查询日期之间的时间范围

  17. 17

    将nvarchar转换为datetime以进行日期范围查询

  18. 18

    创建一种从JSON datetime搜索日期范围的方法

  19. 19

    PHP DateTime 输出范围内的日期数组

  20. 20

    日期范围中的开始和结束日期

  21. 21

    日期范围中的开始和结束日期

  22. 22

    给定季度号和年份,如何找到日期范围?

  23. 23

    SQL:从多个开始日期和结束日期获取范围日期

  24. 24

    如何从“日期”-2周和“日期” + 2周中筛选日期范围

  25. 25

    python datetime和日期比较

  26. 26

    python datetime和日期比较

  27. 27

    我每两周(十四)个日期,我希望根据交易日期和到期日将 op 作为 14 个日期和金额

  28. 28

    将日期范围转换为周和月的数组

  29. 29

    GROUP BY日期范围日期

热门标签

归档