間違ったデータ型を使用すると、日付の処理が少し難しくなる可能性があります。であるフィールドに入力したいと思います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が null でない場合は、 and を連結xdateしxtime、これを使用toString()して解析しようとします。繰り返しますが、これは不必要な複雑さのようです。xdateとxtimeがすでにフィールドであると仮定するとDate、次のように記述できますMaterialCodeCSV.xdate + MaterialCodeCSV.xtime。
- 両方が
Stringフィールドの場合、がフォーマットされており、 であることを確認する必要があります。次に、除外できますxdateyyyy/MM/ddxtimeHH:mm:ss.toString()
- また、両方が
Stringフィールドの場合は、スペースを追加する必要があります。MaterialCodeCSV.xdate + ' ' + MaterialCodeCSV.xtime
- さらに、最初のケースでは、で解析し
yyyy-MM-dd HH:mm:ssます。2 番目のケースでは、 で解析しyyyy/mm/dd H:mm:ssます。これは「年・分・日」と読みます。また、時間の桁は 1 つしかないため、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");