羊皮紙論壇

羊皮紙論壇

分享讓知識傳播,閱讀讓心靈成長, 創作讓文化傳承,讓我們共同努力。
  • 禁止廣告文
  • 知識傳播
  • 閱讀
  • 心靈成長
  • 創作
  • 文化傳承
論壇目錄 / 程式設計 / 網頁/網站程式 / 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, swing
    00
    2009-06-04T11:59:13+0000
    ???8 個小時的毫秒數
    至於為什麼要這樣做 我也不是很清楚了
    感覺是 1970 年 1 月 1 日 8 點
    減掉 8 個小時吧
    呵呵
    00
    2009-06-04T17:30:29+0000
    ???28800000 是指秒數,相當於 8 個小時,而減掉 8 個小時的用意是因為我們所在的地理區域是中原的時間,而台灣地區是格林威治時間再加上 8 個小時。

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

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

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


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