#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 в таленде?