我想在String中解析以下类型的Date,它可以包含之前和之后的其他数据:
例如:foo-bar_2014-10-14_18.56.05_bar 以下DateFormat不起作用:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss", Locale.ENGLISH);
Date result=df.parse(parent.getName());
修改 由于事实,之前和之后的文本可能类似于
我创建了一个与日期匹配的正则表达式。
String pattern="\\d\\d\\d\\d[-]\\d\\d[-]\\d\\d[_]\\d\\d.\\d\\d.\\d\\d";
答案 0 :(得分:4)
最初使用正则表达式来找到字符串的正确部分
String name = "foo-bar_2014-10-14_18.56.05_bar";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss", Locale.ENGLISH);
String pattern = "\\d{4}-\\d{2}-\\d{2}_\\d{2}\\.\\d{2}\\.\\d{2}";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(name);
if (m.find()) {
System.out.println("Found value: " + m.group(0));
Date result = df.parse(m.group(0));
System.out.println("result: " + result);
} else {
System.out.println("NO MATCH");
}
答案 1 :(得分:0)
由于事先不知道第一部分(在日期之前),我认为您唯一的选择是删除第一个“未知”部分。
由于日期模式的长度不变,因此您始终可以使用最后19个字符。这可能比正则表达式稍微有效,也可能更容易理解。