羊皮紙 服務
       
       
      分享
       
      羊皮紙論壇

      羊皮紙論壇

      分享讓知識傳播,閱讀讓心靈成長, 創作讓文化傳承,讓我們共同努力。
      • 禁止廣告文
      • 知識傳播
      • 閱讀
      • 心靈成長
      • 創作
      • 文化傳承
      羊皮紙論壇目錄 / 程式設計 / 網頁/網站程式 / JavaScript /

      Java 一段時間代碼 28800000 的問題?

      發表新主題
      隨機主題
      上個主題
      下個主題
      |
      Java 一段時間代碼 28800000 的問題?

      //顯示時間
      Date d=new Date(System.currentTimeMillis()-startTime.getTime()-28800000);
      這句話啥意思?為什麼-28800000?

      下面是全部代碼:
      import javax.swing.*;
      import java.awt.event.ActionListener;
      import java.awt.event.ActionEvent;
      import java.awt.*;
      import java.util.Date;
      import java.text.SimpleDateFormat;

      public class StopWatch extends JFrame {
      JButton btnStart, btnStop;
      JLabel label;
      Timer timer;

      public StopWatch() {
      label = new JLabel("0000:00.000");
      btnStart = new JButton("start");
      btnStop = new JButton("stop");
      final int delay = 100;
      final Date startTime = new Date();
      final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.S");
      final Action taskPerformer = new AbstractAction() {
      public void actionPerformed(ActionEvent evt) {
      // 顯示時間
      Date d = new Date(System.currentTimeMillis()
      - startTime.getTime() - 28800000);
      System.out.println(d);
      label.setText(sdf.format(d));
      label.repaint();
      }
      };
      btnStart.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
      startTime.setTime(new Date().getTime());
      timer = new Timer(delay, taskPerformer);
      timer.start();
      }
      });
      btnStop.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
      if (timer != null && timer.isRunning())
      timer.stop();
      }
      });

      Container c = getContentPane();
      c.add(label, BorderLayout.NORTH);
      c.add(btnStart, BorderLayout.CENTER);
      c.add(btnStop, BorderLayout.SOUTH);
      }

      public static void main(String[] args) {

      javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
      createAndShowGUI();
      }
      });

      }

      private static void createAndShowGUI() {
      StopWatch window = new StopWatch();
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      window.pack();
      window.setVisible(true);
      }
      }

      • 關鍵字 : public, timer, import, label, window, startTime, final, btnStop, btnStart, StopWatch, ActionEvent, getTime, actionPerformed, System, JButton, BorderLayout, ActionListener, 28800000, 顯示, taskPerformer
      0 0
      2009-06-04T11:59:13+0000

      雪彥 :

      8 個小時的毫秒數
      至於為什麼要這樣做 我也不是很清楚了
      感覺是 1970 年 1 月 1 日 8 點
      減掉 8 個小時吧
      呵呵
      0 0
      2009-06-04T17:30:29+0000

      魚戀秋波 Neil Y.K. :

      28800000 是指秒數,相當於 8 個小時,而減掉 8 個小時的用意是因為我們所在的地理區域是中原的時間,而台灣地區是格林威治時間再加上 8 個小時。

      這個機制一般運用在 Unix like 系統上,像是 Linux,因為 Unix like 所使用的 timestamp 是以格林威治時間記錄,所以當網頁從系統傳出時間給 Java 時,一般情況就必須減 8 個小時才是正常的時間。

      如果網頁平台是 Window 視窗系統,就不必減 8 個小時,因為兩者運作機制不同,要注意一下唷。

      0 0
      2009-06-05T01:34:03+0000


      • 當您未登入羊皮紙時,可以利用臉書 Facebook 登入來發表迴響。若使用羊皮紙會員身份發表迴響則可獲得經驗值及虛擬金幣,用來參加羊皮紙推出的活動。
      發表迴響
       
      驗證字串

      Facebook 粉絲專頁

      QRCode 條碼 & APP 連結

      說明
      本頁網址

      在相關服務標籤中,『掃描條碼,在行動裝置』或是『點擊連結按鈕,在本裝置』中開啟網頁或是 APP 相關操作。
      QRCode