繁体   English   中英

如何在dataweave中减去两个日期

[英]How to subtract two dates in dataweave

我想从当前日期中减去我的 DOB,并将结果与​​ Dataweave 中的整数进行比较。 我可以知道如何实现这一目标吗?

例如,我想要类似 currentDate - DOB <= 35 的东西。

我只知道一种从当前日期添加或减去年份的方法,那就是......

当前日期 - |P35Y| (将帮助我从 2016 年减去 35 年。

提前致谢!!

以下DataWeave代码将减去年份:

{
    age: now.year - dateOfBirth.year
}

注意:将dateOfBirth更改为所需的日期。

这是一个例子:

1) Input Data JSON: { "DOB": "2010-08-15"}, Output: { "ageCategory": "teen"}
2) When Input is { "DOB": "1980-08-15"}, Output is { "ageCategory": "adult"}

这可以通过dataweave中的以下代码来实现:

{ (ageCategory: "teen")  when ((now.year - (payload.DOB as :date).year) < 18),
(ageCategory: "adult") when ((now.year - (payload.DOB as :date).year) >= 18) }

虽然这是旧的,但这是一个常见的问题。 注意,您可以减去任意两个 DateTime 值并返回一个 Period 类型。

例如,假设您有一个具有两个任意日期的对象,start < end,例如:

{
"start": "2021-10-13 08:00:00",
"end":   "2021-10-13 16:00:00"
}

您可以通过将这些字符串转换为 DateTimes,然后从 end 中减去 start 来获得差异,如下所示:

{ timeDiff: ((payload.end replace ' ' with 'T') as DateTime)
            - ((payload.start replace ' ' with 'T') as DateTime)
}

在这种情况下, timeDiff 具有以下值:

|PT8H|

现在,您可以从此 Period 字符串计算秒数或分钟数或其他任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM