java中的日期处理:
需求将字符串转换为日期,tomcat日志的格式如下:
222.78.34.118 - - [13/Jun/2013:00:01:03 +0800] "GET /hq/image.jsp?indexType=cityIndex&productNo=&cityNo=5160&width=231&hight=185&titlePosition=b¬Title=yes HTTP/1.1" 200 2571 "http://hznp.szap.com/" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Maxthon/4.0.5.4000 Chrome/26.0.1410.43 Safari/537.1"
需要将日志分析入库,那么日期格式如上:
13/Jun/2013:00:01:03
那么如何转换为Date类型呢?
代码如下:
SimpleDateFormat df = new SimpleDateFormat("dd/MMM/yyyy:hh:mm:ss",Locale.US);//不添加Local.US这个参数的话,MMM会被解析成中文“六月”
Date d = df.parse(s);
查看api文档可以看到,对于缩写的月份,使用的格式MMM,但是SimpleDateFormat默认是使用本地的语言环境,所以MMM对应的是中文的:“一月”,“二月”···,所以在其后面加上Locale.US指定语言环境是英文环境,这样就可以正确解析了。
同时感慨一下,做了两年,又开始做日记解析,汗!这是从头开始吗!?当时在金鹏的第一个开发任务就是做日志解析的。