fancyboy 发表于 2012-7-19 22:23:31

关于计算机元年的计算

分析用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);
就对了。

hslx111 发表于 2012-7-20 06:33:17

java 就是方便啊,直接有类可以用
页: [1]
查看完整版本: 关于计算机元年的计算