NiFi中如何将日期转换为ISO8601格式?
在NiFi中将日期转换为ISO 8601格式
以下是几种在NiFi中把2022-11-22 00:00:00转换为2022-11-22T00:00:00.000Z的实用方案:
方案1:日期为流文件属性时(推荐)
使用UpdateAttribute处理器直接转换属性值:
- 添加
UpdateAttribute处理器到画布 - 进入处理器的Properties标签,新增属性(例如命名为
iso_8601_date),属性值填写:${your_date_attr:format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "yyyy-MM-dd HH:mm:ss")}- 替换
your_date_attr为实际存储目标日期的属性名称 - 第一个参数是目标ISO格式,第二个参数是原日期的格式
- 如果原日期属于UTC时区,需补充时区参数确保准确性:
${your_date_attr:format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "yyyy-MM-dd HH:mm:ss", "UTC")}
- 替换
方案2:日期在流文件纯文本内容中
使用ReplaceText处理器做正则替换:
- 添加
ReplaceText处理器 - 配置关键参数:
- Search Value:
(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}) - Replacement Value:
$1-$2-$3T$4:$5:$6.000Z - Replacement Strategy:
Replace All
- Search Value:
方案3:日期在JSON字段中
使用JoltTransformJSON处理器配合NiFi表达式语言转换:
假设流文件JSON内容为:
{"original_date": "2022-11-22 00:00:00"}
- 添加
JoltTransformJSON处理器 - 在Jolt Specification中填入以下规范:
转换后会新增[ { "operation": "modify-overwrite-beta", "spec": { "iso_8601_date": "${original_date:format('yyyy-MM-dd\\'T\\'HH:mm:ss.SSS\\'Z\\'', 'yyyy-MM-dd HH:mm:ss')}" } } ]iso_8601_date字段,值为目标格式的日期。
内容的提问来源于stack exchange,提问作者Rodrigo Hajime Himauari
相关产品推荐
相关产品推荐

