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
不为空,你只需连接 xdate
和 xtime
,使用 toString()
并尝试解析它。同样,这似乎是不必要的复杂。如果我现在假设 xdate
和 xtime
已经是 Date
字段,你可以这样写:MaterialCodeCSV.xdate + MaterialCodeCSV.xtime
。
- 如果两者都是
String
字段,您 必须 确保 xdate
的格式为 yyyy/MM/dd
并且 xtime
为HH: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
字段格式正确 xdate
和 xtime
):
MaterialCodeCSV.xdate == null ?
TalendDate.getCurrentDate() :
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");
我合并了两列;日期和时间。当我通过热编码的日期和时间时它工作正常但是当我通过一个列时它抛出错误:
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
不为空,你只需连接xdate
和xtime
,使用toString()
并尝试解析它。同样,这似乎是不必要的复杂。如果我现在假设xdate
和xtime
已经是Date
字段,你可以这样写:MaterialCodeCSV.xdate + MaterialCodeCSV.xtime
。 - 如果两者都是
String
字段,您 必须 确保xdate
的格式为yyyy/MM/dd
并且xtime
为HH: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
字段格式正确 xdate
和 xtime
):
MaterialCodeCSV.xdate == null ?
TalendDate.getCurrentDate() :
TalendDate.parseDateLocale("yyyy/MM/dd HH:mm:ss", MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime,"EN");