我想在Talend Open Studio中將日期從一個字符串格式("M/d/yyyy H:mm:ss"
)轉換爲另一個("yyyy-MM-ddTHH:mm:ss"
)。我一直在閱讀論壇帖子,博客和幫助文檔,我發現的所有解決方案最終都會導致錯誤。我認爲這是因爲大多數解決方案實際上試圖將日期轉換爲字符串,反之亦然,但是他們都沒有嘗試將字符串轉換爲日期然後再轉換回來。 (並且我願意被告知這是錯誤的方法,但似乎是進行轉換的自然方式,因爲據推測,Talend知道如何轉換Date類型的所有部分。)將字符串轉換爲日期轉換爲Talend Open Studio中的字符串
我當前迭代看起來是這樣的:
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
在Java中比較字符串時,應該使用'.equals'。所以在你的情況下,你應該使用'「」.equals(row2._ACTIVITY_DUE_DATE)? 「」:...'。乍一看,其他一切看起來都很好。 – ydaetskcoR 2014-10-09 20:50:49
實際上,當我切換到'row2._ACTIVITY_DUE_DATE_.isEmpty()'時,我只是想發佈一切,一切正常。這只是我的Java noobness阻礙。如果您發佈答案,我很樂意給您信用。 – tmoore82 2014-10-09 20:52:53
解釋可以在這裏找到:http://stackoverflow.com/questions/767372/java-string-equals-versus – tmoore82 2014-10-09 20:53:46