2014-10-09 141 views
1

我想在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 
+1

在Java中比較字符串時,應該使用'.equals'。所以在你的情況下,你應該使用'「」.equals(row2._ACTIVITY_DUE_DATE)? 「」:...'。乍一看,其他一切看起來都很好。 – ydaetskcoR 2014-10-09 20:50:49

+0

實際上,當我切換到'row2._ACTIVITY_DUE_DATE_.isEmpty()'時,我只是想發佈一切,一切正常。這只是我的Java noobness阻礙。如果您發佈答案,我很樂意給您信用。 – tmoore82 2014-10-09 20:52:53

+0

解釋可以在這裏找到:http://stackoverflow.com/questions/767372/java-string-equals-versus – tmoore82 2014-10-09 20:53:46

回答

1

當在Java中比較字符串,你應該使用.equals。所以在你的情況下,你應該使用"".equals(row2._ACTIVITY_DUE_DATE) ? "" : ...

有關日期格式轉換的其他內容看起來很好。