如果使用错误的数据类型,日期处理可能会有点棘手。我假设您要填写一个字段,即Date. 这种方式有几个错误:
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您创建一个日期并立即再次解析它?这似乎是不必要的复杂和低效。将此更改为TalendDate.getCurrentDate()
- 然后如果
xdate不为空,你只需连接xdate和xtime,使用toString()并尝试解析它。同样,这似乎是不必要的复杂。如果我现在假设xdate并且xtime已经是Date字段,你可以这样写MaterialCodeCSV.xdate + MaterialCodeCSV.xtime:
- 如果两者都是
String字段,则必须确保它xdate是格式化的yyyy/MM/dd并且xtime是HH:mm:ss. 然后你可以排除.toString()
- 此外,如果两者都是
String字段,则必须添加一个额外的空间:MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
- 此外,在第一种情况下,您使用
yyyy-MM-dd HH:mm:ss. 在第二种情况下,您使用yyyy/mm/dd H:mm:ss. 这读作“年/分/日”。此外,只有一个小时数字,不允许解析 9:59:59 点之后的任何内容。正确地你应该使用yyyy/MM/dd HH:mm:ss.
所以总而言之,它应该看起来像这样(如果我假设正确并且您使用正确格式的String字段xdateand xtime):
MaterialCodeCSV.xdate == null ?
TalendDate.getCurrentDate() :
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");