【问题标题】:Not able to convert to required Date format in Apache Ni-Fi无法在 Apache Ni-Fi 中转换为所需的日期格式
【发布时间】:2020-03-14 08:12:24
【问题描述】:

我正在尝试转换日期 14-JUL-16 11.37.42.649000000 AM 进入 07/14/2016 11:37:42 格式

我的 Ni-Fi 命令是

${LastContactTimestamp:toDate("dd-MMM-yy hh:mm:ss.SSSSSSSSS"):format("MM/dd/yyyy HH:mm:ss")} 

我收到错误“原因:org.apache.nifi.attribute.expression.language.exception。IllegalAttributeException:无法将属性值解析为日期;日期格式:dd-MMM- yy hh:mm:ss.SSSXXX;属性值:14-JUL-16 11.37.42.649 AM"

试图替换毫秒但得到同样的错误

${LastContactTimestamp:replaceAll('(\.\d{3})\d*','$1'):toDate("dd-MMM-yy hh:mm:ss.SSSXXX"):format("MM/dd/yyyy HH:mm:ss")} 

如何在 Apache-NiFi 中转换为正确的日期格式

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    我认为您必须将第一个日期格式字符串中的冒号替换为点。 您的毫秒精度也没有对齐。 我想以下应该可以完成这项工作:

    dd-MMM-yy hh.mm.ss.SSSSSSSSS aa
    

    因此,将这些放在一起,您的表达将看起来类似于:

    ${LastContactTimestamp:toDate("ddd-MMM-yy hh.mm.ss.SSSSSSSSS aa"):format("MM/dd/yyyy HH:mm:ss")}
    

    可用的格式选项及其映射可见in the documentation。


    目前我无法在我的 NiFi 中检查这一点,但明天晚上会这样做。

    【讨论】:

    • 我编辑了我的毫秒精度..仍然得到错误..什么是“aa”顺便说一句?
    • @praveensangalad 您是否还用点替换了小时、分钟和毫秒之间的冒号? aa 代表 AM / PM,有关更多信息,请参阅添加的链接。
    • @praveensangalad 与正则表达式不同,Java 日期格式字符串中的点匹配实际的点.,冒号: 也是如此。在您的输入字符串中,不是冒号而是点用于将小时与分钟分开。因此使用冒号是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多