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");
- If
MaterialCodeCSV.xdate == null
you create a date and parse it again instantly? That seems unneccessary complex and inefficient. Change this to TalendDate.getCurrentDate()
- Then if
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
.
- If both are
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()
- Also, if both are
String
fields, you have to add an additional space: MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
- Additionally, in the first case you parse with
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");