分析用tcpdump抓的包,trace中一般会有starttime和endtime,计算两者的时间差并且用毫秒表示手动计算会很麻烦,所以写了个小程序,语言是java,代码如下: import java.util.*; public class CalDate { public static void main(String[] args) { GregorianCalendar startTime = new GregorianCalendar(2012, 7, 13, 18, 20, 43); GregorianCalendar endTime = new GregorianCalendar(2012, 7, 13, 18, 31, 03); GregorianCalendar initTime = new GregorianCalendar(1970, 1, 1, 0, 0, 0); Date d1 = startTime.getTime(); Date d2 = endTime.getTime(); Date d0 = initTime.getTime(); long st = d1.getTime(); long et = d2.getTime(); long it = d0.getTime(); long difference1 = st - it; long difference2 = et - it; long totalSeconds1 = difference1 ; long totalSeconds2 = difference2 ; //System.out.println("StartTime in seconds : " + (st/1999) ); //System.out.println("EndTime in senconds : " + (et/1999)); System.out.println("startTime in millseconds: " + totalSeconds1); System.out.println("endTime in millseconds: " + totalSeconds2); } } 但上面的代码有个错误,只要你在装系统的时候用的不是格林尼治时间,比如大多数装linux的时候选择shanghai,那么就会有8个小时的时差,从跑出的trace中分析出来的时间来看验证了这个猜测 所以 GregorianCalendar initTime = new GregorianCalendar(1970, 1, 1, 8, 0, 0); 就对了。 |
[技术| 编程·课件·Linux] 关于计算机元年的计算
fancyboy
· 发布于 2012-07-19 22:23
· 1361 次阅读
转载文章时务必注明原作者及原始链接,并注明「发表于 软院网 RuanYuan.Net 」,并不得对作品进行修改。