howtodown 发表于 2014-8-5 00:14:59

Apache日志格式字符串获取转换时间格式




183.131.11.98 - - "GET /thread-5981-1-1.html HTTP/1.1" 200 18152 "http://www.baidu.com/s?wd=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&pn=30&oq=cocos2dx%203.2%20wp8%E6%94%AF%E6%8C%81&tn=28035039_2_pg&ie=utf-8&rsv_page=1" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 UBrowser/1.0.349.1252 Safari/537.36"

上文所示,Apache获取字符串之后,将其转换为时间格式,也就是首先将字符串转换为“dd/MMM/yyyy:HH:mm:ss”
然后,在转换为常规时间格式“yyyy-MM-dd HH:mm:ss”,如何转换可以看下文


static/image/hrline/2.gif



java中“dd/MMM/yyyy:HH:mm:ss”转换为格式“yyyy-MM-dd HH:mm:ss”

工作遇到时间格式转换问题,

就是在日志分析时,

需要将格式“15/Oct/2009:14:00:00 +0800”转为格式“2009-10-15 14:00:00”,

找了好久没有找到合适的,终于在友人的帮助下解决了:

String viewtime = " 15/Oct/2009:14:00:00 +0800 ";



Date time = new Date();

//Z 对于格式化来说,使用 RFC 822 4-digit 时区格式 ,Locale.US表示使用了美国时间
SimpleDateFormat sdf =new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.US);

time = sdf.parse(viewtime);

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


viewtime = sdf2.format(time);

顺便抽出时间总结了一下java中的时间知识点:

表示年的----- yyyy, e.g2009

表示月的-----MMM,e.gOctober

            -----MMM,e.gOct

            -----MM,e.g   10

表示日的-----dd    ,e.g   15

表示星期几的-----dddd,e.g   Tuesday

0-23小时的------HH,e.g14

表示分钟的-----mm,e.g30

表示秒的--------ss,e.g    59

2278 发表于 2014-8-5 11:47:16

{:soso_e179:}学习了。正需要。。我还是截取。处理的。。太笨了

wubaozhou 发表于 2014-12-31 11:33:08

{:soso_e181:}

ggggying12 发表于 2017-2-23 15:10:29

非常感谢分享
页: [1]
查看完整版本: Apache日志格式字符串获取转换时间格式