使用Pattern
和Matcher
類。
看一下例子:
String inputDate = "01.09.12.00:00:00";
Pattern pattern = Pattern.compile(
"([0-9]{2})[\\.]{0,1}([0-9]{2})[\\.]{0,1}([0-9]{2})[\\.]{0,1}([0-9]{2})[:]{0,1}([0-9]{2})[:]{0,1}([0-9]{2})");
Matcher matcher = pattern.matcher(inputDate);
matcher.find();
StringBuilder cleanStr = new StringBuilder();
for(int i = 1; i <= matcher.groupCount(); i++) {
cleanStr.append(matcher.group(i));
}
SimpleDateFormat format = new SimpleDateFormat("ddMMyyHHmmss");
Date x = format.parse(cleanStr.toString());
System.out.println(x.toString());
最重要的部分是線
Pattern pattern = Pattern.compile(
"([0-9]{2})[\\.]{0,1}([0-9]{2})[\\.]{0,1}([0-9]{2})[\\.]{0,1}([0-9]{2})[:]{0,1}([0-9]{2})[:]{0,1}([0-9]
在這裏您可以定義正則表達式和paranthesis標記組,以便([0-9]{2})
標誌着一個組。然後是在這種情況下可能的分度符[\\.]*
0或1個點,但您可以放置更多可能的分度符,例如[\\.|\]{0,1}
。
然後運行matcher.find()
,如果模式匹配,則返回true。然後使用matcher.group(int)
你可以逐組。請注意,第一組的索引是1.
然後我使用StringBuilder
構造乾淨日期String
。然後解析日期。
乾杯, 米哈爾
如果原來的日期格式不固定,這將是困難的,容易出錯。 – assylias
你能舉出更多日期格式的例子嗎?最好的,如果它涵蓋了你所有的情況。 – nhahtdh
您需要將所有變體標準化爲通用格式。只有你知道所有變化是什麼以及如何改變它們。 –