java yyyyMMddHHmmssSSS字符串的日期解析

1.以下类型的日期字符串我知道怎么解析:"20161012"(yyyyMMdd),"2016-10-12"(yyyy-MM-dd),"2016-10-1210:00"(y... 1.以下类型的日期字符串我知道怎么解析:"20161012"( yyyyMMdd),"2016-10-12"( yyyy-MM-dd),"2016-10-12 10:00"( yyyy-MM-dd HH:mm)这些都可以将日期字符串dateStr,使用replaceAll("[^\\d]+","")来转换解析的格式。2.现在想解析以下格式的字符串:"2016 9 8"(yyyy MM dd),"2016 9 8 10:1 1"(yyyy MM dd HH:mm ss)这些每项都有分隔符,每项值不一定足够位数,不够的位数的项在前面加0补够。
感谢网友提供意见,现在已经解决了,跟原来的思路不太一样了。
以下格式都是可以的:20161012,20161012 10:01,20161012 10:01 10,20161012 10:02 10 555
最后代码太长只能贴图了。
展开
 我来答
pardream941026
2016-10-12 · TA获得超过8222个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1453万
展开全部

这玩艺要用正则表达式

	public static void main(String argv[]) {
String ds = "2016 9 8 10:1 1"; //(yyyy MM dd HH:mm ss)
Pattern p = Pattern.compile("^(\\d*)\\s(\\d*)\\s(\\d*)\\s(\\d*):(\\d*)\\s(\\d*)" , Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(ds);
if (m.matches()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
System.out.println(m.group(4));
System.out.println(m.group(5));
System.out.println(m.group(6));
}

}
更多追问追答
追问

感谢提供思路,用正则也不错。不过现在遇到了个捕获位数的问题

追答
这个正则只是针对 //(yyyy MM dd HH:mm ss)格式的,其它格式,你还需要自己调整。
写函数时候,先设置好各种格式对应的正则表达式,
依次判断m.matches()是否是true,来确认是否解析成功。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式