Не удалось преобразовать строку в дату в компоненте tMap Talend

#etl #talend

#etl #таленд

Вопрос:

Я рассмотрел некоторые аналогичные вопросы, но эти решения не сработали для меня, у меня есть поле даты, представляющее собой строку метки "1631898440" времени, я попытался преобразовать эту строку в дату с помощью tMap, но получил эту ошибку — java.lang.RuntimeException: java.text.ParseException: Unparseable date: "1631898440" .

Функция, которую я использую —

 row5.mydatecolumn!=null amp;amp; !"".equalsIgnoreCase(row5.mydatecolumn)? TalendDate.parseDateLocale("EEE MMM dd HH:mm:ss zzz yyyy", row5.mydatecolumn, "EN") :null   

Также пробовал —

 TalendDate.parseDate("ddMMyyyy",row5.mydatecolumn)  

В этом я понимаю эту ошибку- timestamp out of range: "898442-07-16 00:00:00 05:30"ERROR

Как решить эту проблему, есть ли что-то не так с форматом даты?

Комментарии:

1. поместите tjava и вставьте на него этот код : Строка str = «1631898440»; SimpleDateFormat sf = новый SimpleDateFormat(«гггг-ММ-дд»); Дата дата = новая дата(Длинный.Синтаксический анализ(str)); System.out.println(sf.формат(дата));

2. в расширенных настройках укажите этот импорт : импорт java.text.SimpleDateFormat; импорт java.util. Дата; импорт java.util.*; импорт java.text.DateFormat ;

Ответ №1:

В вашей пользовательской рутине просто создайте функцию, подобную этой :

 public static Date Convert_String_To_Date(String String_Timestamp) {    SimpleDateFormat sf = new SimpleDateFormat("ddMMyyyy");  Date date = new Date(Long.parseLong(String_Timestamp));  System.out.println("*** Date Converted to this patter ddMMyyyy : " sf.format(date));  return TalendDate.parseDate("ddMMyyyy",sf.format(date)) ;   }  

не забывайте об импорте

 import java.text.SimpleDateFormat; import java.util.Date;  

затем для меня я просто вставил компонент tjava, где я назвал свою функцию, как показано ниже

 String str = "1631898440"; System.out.println(Format_String_Date.Convert_String_To_Date(str)) ;   

Итак , в вашем случае вы бы назвали эту функцию в своей карте так, я думаю :

 row5.mydatecolumn!=null amp;amp; !"".equalsIgnoreCase(row5.mydatecolumn)?  Format_String_Date.Convert_String_To_Date(row5.mydatecolumn) :null   

Вот результат

 [statistics] connected *** Date Converted to this patter ddMMyyyy : 19011970 Mon Jan 19 00:00:00 CET 1970 [statistics] disconnected  

Комментарии:

1. Спасибо, что это работает, как я могу сделать это в GMT0 в таленде?