代码之家  ›  专栏  ›  技术社区  ›  user784540

意外的@Adjust公式行为

  •  0
  • user784540  · 技术社区  · 10 年前

    我有一个任务,计算对象的有效期结束日期。

    假设有效期开始日期为: 18 Sept. 2014

    有效期(例如)为: 3 months

    结束日期(对象仍然有效的最后日期,+3个月-1天): 17 Dec 2014

    看起来是正确的,为了计算结束日期,我使用了以下@-公式:

    @Adjust(start; 0; 3; -1; 0; 0; 0);
    

    我在那里添加 3 月和减少 1 开始日期后的第天。

    但当我将开始日期设置为 01 Oct. 2014 我得到了结束日期 30 Dec 2014 而不是 31 Dec 2014 .

    看起来很奇怪,看起来像Lotus Notes引擎中的一个bug。

    1 回复  |  直到 10 年前
        1
  •  1
  •   user784540 user784540    10 年前

    解决方案有点出乎意料,而且简单。

    @Adjust 函数计算其参数 从右到左 .

    换句话说,它会减少 1 day 然后添加 3 months 到开始日期。

    如果开始日期是 01 Oct 2014 然后 @调整 公式得到 30 Sept. 2014 通过添加 -1 day 然后添加 3个月 然后得到 30 Dec 2014 .

    为了解决这个问题,我需要改变初始公式:

    temp_ := @Adjust(start; 0; 3; 0; 0; 0; 0);
    @Adjust(temp_; 0; 0; -1; 0; 0; 0);
    

    temp_ 变量的开始日期增加到3个月,之后我们才从计算结果中减少1天。