java Source

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            14 Posts :: 24 Stories :: 8 Comments :: 0 Trackbacks
          import java.io.InputStream;
          import java.net.Socket;

          /**
           * 
           * 
          @author ray (justinlei@gmail.com)
           * @date 2009-8-27
           * 
          @version 1.0
           
          */
          public class TimeUtil {
              
          public static final int DEFAULT_PORT = 37;
              
          public static final String DEFAULT_HOST = "time-nw.nist.gov";
              
          private TimeUtil() {
              };

              
          public static long currentTimeMillis(Boolean sync) {
                  
          if (sync != null && sync.booleanValue() != true)
                      
          return System.currentTimeMillis();
                  
          try {
                      
          return syncCurrentTime();
                  } 
          catch (Exception e) {
                      
          return System.currentTimeMillis();
                  }
              }

              
          public static long syncCurrentTime()  throws Exception {
                  
          // The time protocol sets the epoch at 1900,
                  
          // the java Date class at 1970. This number
                  
          // converts between them.
                  long differenceBetweenEpochs = 2208988800L;

                  
          // If you'd rather not use the magic number uncomment
                  
          // the following section which calculates it directly.

                  
          /*
                   * TimeZone gmt = TimeZone.getTimeZone("GMT"); Calendar epoch1900 =
                   * Calendar.getInstance(gmt); epoch1900.set(1900, 01, 01, 00, 00, 00);
                   * long epoch1900ms = epoch1900.getTime().getTime(); Calendar epoch1970
                   * = Calendar.getInstance(gmt); epoch1970.set(1970, 01, 01, 00, 00, 00);
                   * long epoch1970ms = epoch1970.getTime().getTime();
                   * 
                   * long differenceInMS = epoch1970ms - epoch1900ms; long
                   * differenceBetweenEpochs = differenceInMS/1000;
                   
          */

                  InputStream raw 
          = null;
                  
          try {
                      Socket theSocket 
          = new Socket(DEFAULT_HOST, DEFAULT_PORT);
                      raw 
          = theSocket.getInputStream();

                      
          long secondsSince1900 = 0;
                      
          for (int i = 0; i < 4; i++) {
                          secondsSince1900 
          = (secondsSince1900 << 8| raw.read();
                      }
                      
          if (raw != null)
                          raw.close();
                      
          long secondsSince1970 = secondsSince1900 - differenceBetweenEpochs;
                      
          long msSince1970 = secondsSince1970 * 1000;
                      
          return msSince1970;
                  } 
          catch (Exception e) {
                      
          throw new Exception(e);
                  }
              }
          }
          posted on 2011-12-04 02:54 JustinLei 閱讀(1645) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 巴塘县| 阳曲县| 桃园县| 康马县| 泽库县| 蛟河市| 临夏市| 保康县| 宁河县| 肇源县| 板桥市| 中西区| 卢龙县| 台安县| 海宁市| 万源市| 高州市| 潮州市| 石棉县| 雅安市| 仙居县| 建瓯市| 扎赉特旗| 泽州县| 青铜峡市| 正安县| 汶上县| 获嘉县| 东乌| 永春县| 英吉沙县| 井研县| 隆尧县| 洱源县| 临海市| 哈巴河县| 兴安盟| 罗江县| 贺兰县| 乡宁县| 集贤县|