Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Talend-在“yyyy-mm-dd”中转换“EEE-MMM-dd hh:mm:ss z-yyyy”_Java_Date_Datetime_Talend_Data Conversion - Fatal编程技术网

Java Talend-在“yyyy-mm-dd”中转换“EEE-MMM-dd hh:mm:ss z-yyyy”

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

我从以下格式的文件中收到一个日期: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 = 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的日期


希望这对某人有所帮助。

发布前搜索堆栈溢出。您可以假设任何基本的日期时间问题都已经被询问和回答。