NiFi中epoch时间戳转正常时间戳输出1970年错误问题咨询
Epoch秒级时间戳转可读时间错误修复方案
问题根因
你使用${field.value:format('MM/dd/yyyy HH:mm:ss.SSS')}得到1970年错误日期的核心原因是:待转换的1625777940是秒级Epoch时间戳,而对应格式转换函数默认要求传入的时间参数为毫秒级,直接传入秒级数值会被识别为仅距离1970-01-01过去了16亿多毫秒(约18天),自然输出错误的早期日期。
修复方法
调用格式转换前先将秒级时间戳转为毫秒级即可,修改后的表达式如下:
${field.value:toNumber():multiply(1000):format('MM/dd/yyyy HH:mm:ss.SSS')}
表达式逻辑说明
toNumber():先将字段值转为数值类型,避免字符串类型无法执行算术运算multiply(1000):把秒级时间戳放大1000倍转为毫秒级,适配格式转换函数的输入要求- 后续格式参数可保持你原本需要的输出规则不变
验证结果
你提供的示例时间戳1625777940经过上述表达式转换后,输出结果为07/08/2021 15:39:00.000,为正确时间值。
注意:如果后续处理的是13位的毫秒级时间戳,无需添加
multiply(1000)步骤,直接调用format函数即可。
内容的提问来源于stack exchange,提问作者KReddy
相关产品推荐
相关产品推荐

