You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NiFi中将指定日期时间转换为24小时制格式

NiFi日期格式转换解决方案

针对你遇到的8/6/2023 12:46 am转2023-08-06 00:46:00的需求,用UpdateRecord处理器可以搞定,核心是正确匹配原日期的格式字符串,之前没成功大概率是格式参数写错了,具体操作如下:

关键表达式写法

假设待转换的字段名为original_time,目标字段可以是原字段(覆盖)或新字段(比如formatted_time),在UpdateRecord的「Record Path Value」属性中填入:

format(toDate(${original_time}, 'M/d/yyyy hh:mm a'), 'yyyy-MM-dd HH:mm:ss')

格式参数说明

  • 原日期格式M/d/yyyy hh:mm a:
    • M:1-12的月份(对应原日期的8)
    • d:1-31的日期(对应原日期的6)
    • hh:12小时制的小时(对应原日期的12)
    • a:匹配am/pm标识
  • 目标格式yyyy-MM-dd HH:mm:ss:
    • yyyy:4位年份
    • MM:补零的月份(转成08)
    • dd:补零的日期(转成06)
    • HH:24小时制的小时(12 am转成00)
    • mm:ss:补零的分钟和秒(秒默认补00)

完整配置步骤

  1. 给UpdateRecord配置合适的Record Reader和Writer,比如你的数据是JSON格式,就选JsonTreeReader和JsonRecordSetWriter,确保能正确解析和输出你的数据结构。
  2. 在UpdateRecord的属性列表里添加一条配置:
    • 名称:填你要设置的目标字段名(比如/formatted_time,如果是JSON路径;或者直接字段名,根据Reader的配置)
    • 值:填上面的表达式
  3. 用测试数据验证,比如生成一条包含"original_time": "8/6/2023 12:46 am"的FlowFile,经过UpdateRecord后就能得到"formatted_time": "2023-08-06 00:46:00"的结果。

额外注意事项

如果你的数据涉及时区问题,可以在toDate函数里加第三个参数指定时区,比如:

format(toDate(${original_time}, 'M/d/yyyy hh:mm a', 'GMT+8'), 'yyyy-MM-dd HH:mm:ss')

内容的提问来源于stack exchange,提问作者janvit04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:23:19