首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nifi -如何从日期中添加或减去月份?

Nifi -如何从日期中添加或减去月份?
EN

Stack Overflow用户
提问于 2020-05-14 15:25:24
回答 2查看 1.3K关注 0票数 0

我想获取两个字段:上个月的Begin dateEnd date。例如,14-04-2020应该将Begin date设置为01-03-2020,将End_date设置为31-03-2020。我读过Nifi表达式语言文档,但它对日期格式所能做的就是以毫秒为单位进行加法或减法。这对我的用例没有帮助,因为一个月中的天数不是固定的,转换为毫秒也没有帮助。

有没有办法使用Nifi表达式语言来实现我的用例?

EN

Stack Overflow用户

发布于 2021-08-26 09:30:12

在使用NiFi的情况下,您必须处理日期才能获得结果

如果您有日期,您可以很容易地转换日期,然后只需硬设置日期即可获得具有硬编码日期的月份的第一天

代码语言:javascript
运行
复制
${now():toNumber():format('yyyy-MM-01')}

要获取一个月的最后一天,您可以使用脚本或使用epoch time处理计算。

因此,要获得上个月的最后一天,只需使用日期,将该日期转换为纪元时间,然后从纪元日期中减去它,即可获得上个月的最后一天。

示例

代码语言:javascript
运行
复制
${now():toNumber():format('yyyy-MM-dd'):toDate('yyyy-MM-dd', 'GMT'):toNumber():minus(${now():toNumber():format('dd'):toNumber():multiply(86400):multiply(1000)}):format('yyyy-MM-dd')}

在上面的例子中,我们将日期转换为纪元格式,然后再次转换,转换发生时删除了默认的时间戳,然后我们使用相同的公式将日期作为一个数字来乘以86400秒,再乘以1000,以从日期中减去纪元编号,然后将日期格式化为日期。

原始日期:2021年8月26日星期四上午11:20:31

格式:2021年8月26日星期四上午12:00:00

格式化日期的纪元: 1629936000000

减去纪元: 2246400000 (86400秒* 26天*86400)

结果: 2021-07-31

或者,您可以先添加一个月,然后返回工作,以获得给定月份的当前日期

这个例子只是给你一个想法,你可以使用内置的日期函数和纪元时间来计算正确的日期,消除以特定数字结尾的月份的问题。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61791630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档