Java Talend-在“yyyy-mm-dd”中转换“EEE-MMM-dd hh:mm:ss z-yyyy”
我从以下格式的文件中收到一个日期:EEE MMM dd hh:mm:ss z yyyy,我正在尝试将此值转换为日期yyyy-mm-dd。为此,我使用:Java Talend-在“yyyy-mm-dd”中转换“EEE-MMM-dd hh:mm:ss z-yyyy”,java,date,datetime,talend,data-conversion,Java,Date,Datetime,Talend,Data Conversion,我从以下格式的文件中收到一个日期:EEE MMM dd hh:mm:ss z yyyy,我正在尝试将此值转换为日期yyyy-mm-dd。为此,我使用: TalendDate.parseDate("yyyy/MM/dd", TalendDate.formatDate("yyyy/MM/dd", TalendDate.parseDate("EEE MMM dd hh:mm:ss z yyyy",context.date))) 此处定义了context.date: context.date = in
TalendDate.parseDate("yyyy/MM/dd", TalendDate.formatDate("yyyy/MM/dd", TalendDate.parseDate("EEE MMM dd hh:mm:ss z yyyy",context.date)))
此处定义了context.date:
context.date = input_row.mtime_string;
但是,当我运行JavaRow组件时,会出现以下错误:
组件tJavaRow_1中出现异常
"java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Thu Aug 09 10:38:45 BST 2018"
我怎样才能解决这个问题
非常感谢 您可以使用下面的代码片段实现该格式-
System.out.println(input_row.newColumn);
SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.ENGLISH);
Date date = parserSDF.parse(input_row.newColumn);
String dDate = null;
parserSDF = new SimpleDateFormat("yyyy-MM-dd");
dDate = parserSDF.format(date);
System.out.println(dDate);
此外,还需要导入以下库tJavaRow的高级设置部分-
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.Date;
在我的场景中,我直接将输入值从FileTFileInputDelimited传递到tJavaRow作为-input_row.newColumn,然后使用SimpleDataFormat类根据格式化模式解析和格式化日期
阅读更多信息。如果要将日期转换为LocalDate,下面的代码可能会有所帮助:
private LocalDate getLocalDate(String date){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd hh:mm:ss z yyyy", Locale.getDefault());
return LocalDate.parse(date, formatter);
}
一旦获得LocalDate,就可以将其转换为任何格式。正如问题所期望的那样,yyyy-MM-dd然后调用LocalDate对象上的toString
LocalDate curr = LocalDate.now();
System.out.println(curr.toString());
它将显示类似2019-11-20的日期
希望这对某人有所帮助。发布前搜索堆栈溢出。您可以假设任何基本的日期时间问题都已经被询问和回答。