Datetime Apache Nifi表达式语言-toDate格式
我正在尝试使用ApacheNIFI表达式语言和替换文本处理器regex格式化日期字符串。给定一个日期字符串Datetime Apache Nifi表达式语言-toDate格式,datetime,apache-nifi,Datetime,Apache Nifi,我正在尝试使用ApacheNIFI表达式语言和替换文本处理器regex格式化日期字符串。给定一个日期字符串 date_str : "2018-12-05T11:44:39.717+01:00", 我希望将此转换为: correct_mod_date_str: "2018-12-05 10:44:39.717", 请注意日期是如何转换为UTC的,字符“T”被空格替换 为此,我目前正在使用: toDate("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"):format("
date_str : "2018-12-05T11:44:39.717+01:00",
我希望将此转换为:
correct_mod_date_str: "2018-12-05 10:44:39.717",
请注意日期是如何转换为UTC的,字符“T”被空格替换
为此,我目前正在使用:
toDate("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"):format("yyyy-MM-dd HH:mm:ss.SSS", '+00:00')
这是完美的
但是,当日期字符串的单位为6位(毫秒)而不是3位时,会出现以下情况:
another_date_str: "2018-12-05T11:44:39.717456+01:00"
转换为:
incorrect_mod_date_str: "2018-12-05 10:56:36.456"
ms精度中的前3位似乎会干扰转换
感谢您为解决此问题提供的帮助-我缺少什么
这似乎是java的一个限制。 根据java文档,不支持超过3毫秒的数字 最简单的方法是删除额外的数字,如下所示: 属性:replaceAll'\.\d{3}\d*,“$1”:toDateyyyy-MM-dd'T'HH:MM:ss.SSSXXX:formatyyy-MM-dd HH:MM:ss.SSS,+00:00'
这似乎是java的一个限制。 根据java文档,不支持超过3毫秒的数字 最简单的方法是删除额外的数字,如下所示: 属性:replaceAll'\.\d{3}\d*,“$1”:toDateyyyy-MM-dd'T'HH:MM:ss.SSSXXX:formatyyy-MM-dd HH:MM:ss.SSS,+00:00'