[技术| 编程·课件·Linux] 关于计算机元年的计算

fancyboy · 发布于 2012-07-19 22:23 · 1361 次阅读
480
分析用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);
就对了。
共收到 1 条回复
hslx111 · #2 · 2012-7-20 06:33:17  回复 支持 反对
java 就是方便啊,直接有类可以用
回帖
B Color Image Link Quote Code Smilies
Command + Enter
快速回复 返回顶部 返回列表