关于计算机元年的计算
分析用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 inmillseconds: " + totalSeconds1);
System.out.println("endTime in millseconds: " + totalSeconds2);
}
}
但上面的代码有个错误,只要你在装系统的时候用的不是格林尼治时间,比如大多数装linux的时候选择shanghai,那么就会有8个小时的时差,从跑出的trace中分析出来的时间来看验证了这个猜测
所以
GregorianCalendar initTime = new GregorianCalendar(1970, 1, 1, 8, 0, 0);
就对了。
java 就是方便啊,直接有类可以用
页:
[1]