Mule 4中yyyy-MM-dd HH:mm:ss.SSSSS格式时间转换报错求助
Mule 4 DataWeave时间格式转换错误解决方法
问题原因
错误提示中“索引25处存在未解析文本”,核心原因是时间字符串的小数位数与指定的解析格式不匹配:
- 原字符串
2023-02-07 08:23:00.167000小数点后是6位数字 - 你使用的解析格式
yyyy-MM-dd HH:mm:ss.SSSSS仅定义了5个S(对应5位毫秒/微秒数),格式位数和实际字符串位数不一致,导致解析失败。
DataWeave里的S用于匹配时间的小数部分(毫秒、微秒、纳秒),每个S对应一位数字,6位小数需要用6个S来定义格式。
修正后的代码
%dw 2.0 var dtTime = '2023-02-07 08:23:00.167000' output application/json --- { crtDate: dtTime as LocalDateTime {format : "yyyy-MM-dd HH:mm:ss.SSSSSS"} as String {format:"yyyy-MM-dd'T'HH:mm:ss"} }
效果说明
将解析格式字符串改为yyyy-MM-dd HH:mm:ss.SSSSSS后,就能正确解析原时间字符串;转换为LocalDateTime再格式化为目标格式时,会自动忽略小数部分,最终得到预期结果:2023-02-07T08:23:00
内容的提问来源于stack exchange,提问作者Hasan Limon
相关产品推荐
相关产品推荐

