我的输入文件显示:
Name,Age,Date
abc,26,2016-12-16 00:00:01
pqr,25,2016-12-17 12:00:00
我的输出文件必须是:
Name,Age,Date
ABC,26,2016-12-16 05:30:01
PQR,25,2016-12-17 17:30:00
我正在使用flume拦截器进行文件转换和输出文件移动。
我写了下面的逻辑。但有一个明显的例外 "Cannot parse Date".
基本上,我必须忽略输入文件头,即 Name,Age,Date
. 如何实现这一点与我下面的代码
SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date =new Date();
String line = new String(startEventBody);
String[] token = line.split(",");
date=a.parse(token[2]);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, 5);
cal.add(Calendar.MINUTE, 30);
String b = a.format(cal.getTime()).toString();
token[0] = token[0].toUpperCase();
token[2]=token[2].replace(token[2], b);
String newLine = "";
for (String s : token) {
newLine += s + ",";
}
newLine = newLine.replaceAll("\\r\\n|\\r|\\n", "");
this.outputStream = new ByteArrayOutputStream(newLine.getBytes().length);
this.outputStream.write(newLine.getBytes());
return this.outputStream.toByteArray();
1条答案
按热度按时间gfttwv5a1#
你可以用
.setLenient
日期格式在不离开标题的第一行的情况下,您可以检查日期格式的健全性,如下所示
注意:当然你也可以检查
String
Date
而不是DateFormat
.