Talend 日期和时间组合

Talend date and time combine

我合并了两列;日期和时间。当我通过热编码的日期和时间时它工作正常但是当我通过一个列时它抛出错误:

Unparseable date: "05/05/1992"

我已经试过了:

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 Talend 中的代码:

如果使用错误的数据类型,日期处理可能会有点棘手。我假设您要填写 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 不为空,你只需连接 xdatextime,使用 toString() 并尝试解析它。同样,这似乎是不必要的复杂。如果我现在假设 xdatextime 已经是 Date 字段,你可以这样写:MaterialCodeCSV.xdate + MaterialCodeCSV.xtime
  • 如果两者都是 String 字段,您 必须 确保 xdate 的格式为 yyyy/MM/dd 并且 xtimeHH:mm:ss。那么你可以排除 .toString()
  • 此外,如果两者都是 String 字段,则必须添加额外的 space:MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
  • 此外,在第一种情况下,您使用 yyyy-MM-dd HH:mm:ss 进行解析。在第二种情况下,您使用 yyyy/mm/dd H:mm:ss 进行解析。这显示为 "year/minute/day"。此外,只有一个小时数字,不允许解析 9:59:59 点之后的任何内容。正确地你应该使用 yyyy/MM/dd HH:mm:ss

所以总结起来应该是这样的(如果我假设正确并且您使用的 String 字段格式正确 xdatextime):

MaterialCodeCSV.xdate == null ? 
TalendDate.getCurrentDate() : 
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");