我想获取两个字段:上个月的Begin date
和End date
。例如,14-04-2020
应该将Begin date
设置为01-03-2020
,将End_date
设置为31-03-2020
。我读过Nifi表达式语言文档,但它对日期格式所能做的就是以毫秒为单位进行加法或减法。这对我的用例没有帮助,因为一个月中的天数不是固定的,转换为毫秒也没有帮助。
有没有办法使用Nifi表达式语言来实现我的用例?
发布于 2021-08-26 09:30:12
在使用NiFi的情况下,您必须处理日期才能获得结果
如果您有日期,您可以很容易地转换日期,然后只需硬设置日期即可获得具有硬编码日期的月份的第一天
${now():toNumber():format('yyyy-MM-01')}
要获取一个月的最后一天,您可以使用脚本或使用epoch time处理计算。
因此,要获得上个月的最后一天,只需使用日期,将该日期转换为纪元时间,然后从纪元日期中减去它,即可获得上个月的最后一天。
示例
${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
或者,您可以先添加一个月,然后返回工作,以获得给定月份的当前日期
这个例子只是给你一个想法,你可以使用内置的日期函数和纪元时间来计算正确的日期,消除以特定数字结尾的月份的问题。
https://stackoverflow.com/questions/61791630
复制相似问题