【发布时间】:2020-06-05 01:40:16
【问题描述】:
假设每个月都有 30 天,我想计算两个给定日期之间的天数。
FROM 05/04/2020
TO 20/12/2020
result: 256 days (NOT 259 days if we considered months with 31 days)
通过日期之间的简单数学减法,我得到了错误的结果:
(Date.new(2019,12,20) - Date.new(2019,4,5)).floor
=> 259
为了克服这个问题,我必须创建一个非常复杂的算法:
days += inclusive_days_in_range(
position_data[:workFrom],
position_data[:workFrom].at_end_of_month
)
months = inclusive_months_in_range(
position_data[:workFrom].at_beginning_of_month.next_month,
position_data[:workTo].at_end_of_month.prev_month
)
days += months * MAX_DAYS_IN_MONTHS
days += inclusive_days_in_range(
position_data[:workTo].at_beginning_of_month,
position_data[:workTo]
)
有简单的方法吗?
【问题讨论】:
-
我既震惊又着迷,您的要求是正确的日历感知计算是“错误的结果”
-
@Max 一些计算使用所谓的30/360 day count convention。
标签: ruby