Date Talend日期和时间组合

Date Talend日期和时间组合,date,time,concatenation,talend,unparseable,Date,Time,Concatenation,Talend,Unparseable,我合并了两列;日期和时间。当我通过热编码传递日期和时间时,它工作正常,但当我通过一列传递时,它抛出错误: 不可上诉日期:“1992年5月5日” 我已经试过了: 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

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

不可上诉日期:“1992年5月5日”

我已经试过了:

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"); 
Talend中的Java代码:


如果使用错误的数据类型,日期处理可能会有点棘手。我假设您要填写一个日期为
的字段。这种方式有几个错误:

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");
  • 如果
    materialcodesv.xdate==null
    您创建了一个日期并立即再次解析它?这似乎是不必要的复杂和低效。将其更改为
    TalendDate.getCurrentDate()
  • 然后,如果
    xdate
    不为空,您只需连接
    xdate
    xtime
    ,使用
    toString()
    并尝试解析它。同样,这似乎是不必要的复杂。如果我假设now和
    xdate
    xtime
    已经是
    Date
    字段,您可以这样写:
    materialdecsv.xdate+materialdecsv.xtime
  • 如果两者都是
    String
    字段,则必须确保
    xdate
    的格式为
    yyyy/MM/dd
    xtime
    的格式为
    HH:MM:ss
    。然后可以排除
    .toString()
  • 此外,如果两个字段都是
    字符串
    字段,则必须添加一个额外的空格:
    MaterialCodeCSV.xdate+''+MaterialCodeCSV.xtime
  • 此外,在第一种情况下,使用
    yyyy-MM-dd HH:MM:ss
    进行解析。在第二种情况下,使用
    yyyy/mm/ddh:mm:ss
    进行解析。上面写着“年/分钟/天”。此外,只有一个小时数字,不允许解析9:59:59点之后的任何内容。您应该正确地使用
    yyyy/MM/dd HH:MM:ss
因此,总结起来应该是这样的(如果我假设正确,并且您正在为
xdate
xtime
使用格式正确的
String
字段):


“MaterialDecsv.xtime”列中的所有日期是否具有相同的格式“01/01/2000”?那么这个专栏是什么类型的呢?非常感谢你的简要解释,它非常有帮助
MaterialCodeCSV.xdate == null ? 
TalendDate.getCurrentDate() : 
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");