Reputation: 33
I combine two columns; date and time. When I pass the date and time hot coded it works fine but when I pass it through a column it throws the error:
Unparseable date: "05/05/1992"
I already tried this:
MaterialCodeCSV.xdate == null ?
TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", TalendDate.getDate("yyyy-MM-dd HH:mm:ss")) :
TalendDate.parseDateLocale("yyyy/mm/dd HH:mm:ss",MaterialCodeCSV.xdate.toString() + MaterialCodeCSV.xtime.toString(),"EN");
Java code in Talend:
Upvotes: 0
Views: 1208
Reputation: 8239
Date handling can be a bit tricky if using wrong data types. I assume you want to fill a field which is a Date
. There are several errors with this way:
MaterialCodeCSV.xdate == null ?
TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", TalendDate.getDate("yyyy-MM-dd HH:mm:ss")) :
TalendDate.parseDateLocale("yyyy/mm/dd H:mm:ss",MaterialCodeCSV.xdate.toString()+ MaterialCodeCSV.xtime.toString(),"EN");
MaterialCodeCSV.xdate == null
you create a date and parse it again instantly? That seems unneccessary complex and inefficient. Change this to TalendDate.getCurrentDate()
xdate
is not null, you just concat xdate
and xtime
, use toString()
and try to parse this. Again, this seems unneccesary complex. If I just assume now and xdate
and xtime
are already Date
fields, you could write it as this: MaterialCodeCSV.xdate + MaterialCodeCSV.xtime
. String
fields, you have to make sure that xdate
is formatted yyyy/MM/dd
and xtime
is HH:mm:ss
. Then you could exclude .toString()
String
fields, you have to add an additional space: MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
yyyy-MM-dd HH:mm:ss
. In the second case you parse with yyyy/mm/dd H:mm:ss
. This reads "year/minute/day". Also there is only one hour digit, not allowing anything after 9:59:59 o'clock to be parsed. Correctly you should use yyyy/MM/dd HH:mm:ss
. So to conclude it should look like this (if I assume correctly and you are using correctly formatted String
fields for xdate
and xtime
):
MaterialCodeCSV.xdate == null ?
TalendDate.getCurrentDate() :
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");
Upvotes: 1