使用Periods计算日期差值结果错误,求代码修正方案
问题分析
你的代码输出为4的原因有两个:
- 日期参数顺序颠倒:
Periods::between的第一个参数是起始日期,第二个是结束日期。你传入的19-12-2022(晚日期)在前,15-11-2022(早日期)在后,返回的周期是P-1M-4D(负1个月零4天),取days属性得到的是-4,输出时显示为4。 - 错误使用Period的days属性:
Periods::between返回的是按年、月、日拆分的周期,days仅代表周期中的天数部分(不包含月份换算的天数),并非两个日期之间的总天数差。
修正方案
如果你需要计算两个日期的总天数差,无需使用Periods模块,直接对两个日期做减法运算,再转换为天数单位即可。同时调整日期顺序确保结果为正(若需要负差值可保留原顺序):
%dw 2.0 output application/json --- // 计算15-11-2022到19-12-2022的总天数差(结果为34,若预期23需确认日期是否正确) ("19-12-2022" as Date {format: "dd-MM-yyyy"} - "15-11-2022" as Date {format: "dd-MM-yyyy"}) as Number {unit: "days"}
若你的预期结果23对应特定日期组合(例如19-11-2022到12-12-2022),只需替换对应日期字符串即可:
%dw 2.0 output application/json --- ("12-12-2022" as Date {format: "dd-MM-yyyy"} - "19-11-2022" as Date {format: "dd-MM-yyyy"}) as Number {unit: "days"}
内容的提问来源于stack exchange,提问作者subhash
相关产品推荐
相关产品推荐

