Talend tFileInputMail提取邮件日期报Unparseable date错误如何解决?
Talend 英文邮件日期解析失败解决方案
问题根因
你遇到的解析报错是Locale(区域设置)不匹配导致的:
- 输入日期中的星期缩写
Tue、月份缩写Sep都是英文格式 TalendDate.parseDate方法默认使用当前操作系统/项目的默认Locale进行日期解析,当Locale为非英语区域时,无法识别英文的星期、月份缩写,就会抛出Unparseable date异常
解决方案
方案1:指定解析用英文Locale(最推荐)
直接使用TalendDate.parseDate的三参数重载方法,显式指定用英文Locale解析,不会影响项目其他功能,修改后的tMap表达式如下:
TalendDate.formatDate("yyyy-MM-dd HH:mm:ss",TalendDate.parseDate("EEE, dd MMM yyyy HH:mm:ss Z",mailData.Date,java.util.Locale.ENGLISH))
方案2:修改Talend项目全局Locale
如果项目中大量使用英文格式的日期,可以统一修改项目默认Locale:
- 打开Talend顶部菜单栏
Window > Preferences > Talend > Internationalization - 将Locale设置为
en_US后保存生效
方案3:增加空值容错处理
如果存在日期字段为空的邮件,可以加非空判断避免空指针异常:
mailData.Date == null || mailData.Date.trim().isEmpty() ? null : TalendDate.formatDate("yyyy-MM-dd HH:mm:ss",TalendDate.parseDate("EEE, dd MMM yyyy HH:mm:ss Z",mailData.Date,java.util.Locale.ENGLISH))
内容的提问来源于stack exchange,提问作者Arnaud Stephan
相关产品推荐
相关产品推荐

