我想从以下字符串中提取日期和年份,并将其转换为Java中的数据对象。
Mon Jul 07 19:18:26 CEST 2014
如何以复杂的方式从文本中提取日期和年份(在本例中为2014-07-07)?
答案 0 :(得分:2)
SimpleDateFormat s = new SimpleDateFormat("dd/MMM/yyyy");
String dateInString = "Mon Jul 07 19:18:26 CEST 2014";
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = s.parse(dateInString.split(" ")[2]+"/"+dateInString.split(" ")[1]+"/"+dateInString.split(" ")[5]);
System.out.println(new SimpleDateFormat("YYYY-MM-dd").format(date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这应该适合你,我拆分你的字符串,然后把它放到一个日期格式,然后按照你想要的方式格式化,假设你想要将月份作为年后的第二个参数,如果那不是例如,您只需将'MM'更改为'dd',将'dd'更改为'MM'。
答案 1 :(得分:0)
对于Java 7或更低版本,请使用SimpleDateFormat
进行解析和格式化:
Locale dateLocale = Locale.US;
SimpleDateFormat inFormat = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy", dateLocale);
Date date = inFormat.parse("Mon Jul 07 19:18:26 CEST 2014");
SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd", dateLocale);
System.out.println(outFormat.format(date));
从Java 8开始,您可以使用DateTimeFormatter
:
Locale dateLocale = Locale.US;
DateTimeFormatter inFormatter = DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z yyyy", dateLocale);
TemporalAccessor date = inFormatter.parse("Mon Jul 07 19:18:26 CEST 2014");
DateTimeFormatter outFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
System.out.println(outFormatter.format(date));