我试图在Talend Open Studio中将日期从一种字符串格式("M/d/yyyy H:mm:ss"
)转换为另一种格式("yyyy-MM-ddTHH:mm:ss"
)。我一直在阅读论坛帖子,博客和帮助文档,我发现的所有解决方案最终都会导致错误。我认为这是因为大多数解决方案实际上都在尝试将日期转换为字符串,反之亦然,但我们都没有尝试将字符串转换为日期然后再转换回来。 (而且我很乐意被告知这是错误的方法,但这似乎是进行转换的自然方式,因为Talend可能知道如何转换Date类型的所有部分。)
我当前的迭代看起来像这样:
row2._ACTIVITY_DUE_DATE_==""?"":TalendDate.formatDate("yyyy-MM-dd HH:mm:ss", TalendDate.parseDate("M/d/yyyy H:mm:ss", row2._ACTIVITY_DUE_DATE_))
因此,如果我输入5/18/2012 1:00:00 PM
,我会想要回到2012-05-18 13:00:00
。我收到了unparsable date
错误,我在下面提到了这个错误。我不明白为什么会这样。上面的表达式应该只是尝试解析日期,如果它的不等于""
,但显然它是无法解析的值:
Exception in component tMap_1
java.lang.RuntimeException: java.text.ParseException: Unparseable date: ""
at routines.TalendDate.parseDate(TalendDate.java:864)
at routines.TalendDate.parseDate(TalendDate.java:808)
at msm_extras.msm_activities_i360_tasks_0_1.MSM_Activities_i360_Tasks.tFileInputDelimited_1Process(MSM_Activities_i360_Tasks.java:2854)
at msm_extras.msm_activities_i360_tasks_0_1.MSM_Activities_i360_Tasks.runJobInTOS(MSM_Activities_i360_Tasks.java:3690)
at msm_extras.msm_activities_i360_tasks_0_1.MSM_Activities_i360_Tasks.main(MSM_Activities_i360_Tasks.java:3549)
Caused by: java.text.ParseException: Unparseable date: ""
at java.text.DateFormat.parse(Unknown Source)
at routines.TalendDate.parseDate(TalendDate.java:850)
... 4 more
答案 0 :(得分:1)
在比较Java中的字符串时,您应该使用.equals
。因此,在您的情况下,您应该使用"".equals(row2._ACTIVITY_DUE_DATE) ? "" : ...
。
关于日期格式转换的其他所有内容都很合适。