Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中获得更新时间?_Java_Timer - Fatal编程技术网

如何在Java中获得更新时间?

如何在Java中获得更新时间?,java,timer,Java,Timer,我试图编写一个简单的java程序,使我能够获得每秒钟的更新时间。然后,所有时间值都存储在文本文件中。然而,我只能得到第一次,它不断得到同样的结果&一次又一次 代码: import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.text.SimpleDateFormat; im

我试图编写一个简单的java程序,使我能够获得每秒钟的更新时间。然后,所有时间值都存储在文本文件中。然而,我只能得到第一次,它不断得到同样的结果&一次又一次

代码:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class testTime extends javax.swing.JFrame {

    public Writer writer=null;
    public Calendar cal = Calendar.getInstance();
    public File file;
    protected boolean isRunning=false;

    public testTime() {
        initComponents();
        initTimer();
    }

    public void initTimer()
    {
      this.isRunning=true;  
      tryToGetUpdateTime();
    }

    public void tryToGetUpdateTime()
    {
        java.awt.EventQueue.invokeLater(new Runnable() {

        SimpleDateFormat sdfHour = new SimpleDateFormat("HH:mm:ss");
        SimpleDateFormat sdfMonth = new SimpleDateFormat("dd/MM/yyyy");   

         public void run() {
            while (isRunning) {                   
                try{
                    file= new File("c:/Users/user/Desktop/updateTime.txt");

                    if(!file.exists())
                    {
                       file.createNewFile();
                    }

                    FileWriter fileWriter = new FileWriter(file,true);
                    BufferedWriter bufferWritter = new BufferedWriter(fileWriter);                                                     bufferWritter.append("**************************************************" +  '\n');
                    bufferWritter.append(sdfMonth.format(cal.getTime()) + " " + sdfHour.format(cal.getTime()) + '\n');
                    bufferWritter.append("**************************************************" +  '\n');
                    bufferWritter.close();
                   }catch(IOException ex){
                       System.err.println("Error in Writer : " + ex);
                   }              
              }
        }
      });
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new testTime().setVisible(true);
            }
        });
    }                  
}
**************************************************
15/07/2015 23:28:52
**************************************************
**************************************************
15/07/2015 23:28:52
**************************************************
**************************************************
15/07/2015 23:28:52
**************************************************
输出:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class testTime extends javax.swing.JFrame {

    public Writer writer=null;
    public Calendar cal = Calendar.getInstance();
    public File file;
    protected boolean isRunning=false;

    public testTime() {
        initComponents();
        initTimer();
    }

    public void initTimer()
    {
      this.isRunning=true;  
      tryToGetUpdateTime();
    }

    public void tryToGetUpdateTime()
    {
        java.awt.EventQueue.invokeLater(new Runnable() {

        SimpleDateFormat sdfHour = new SimpleDateFormat("HH:mm:ss");
        SimpleDateFormat sdfMonth = new SimpleDateFormat("dd/MM/yyyy");   

         public void run() {
            while (isRunning) {                   
                try{
                    file= new File("c:/Users/user/Desktop/updateTime.txt");

                    if(!file.exists())
                    {
                       file.createNewFile();
                    }

                    FileWriter fileWriter = new FileWriter(file,true);
                    BufferedWriter bufferWritter = new BufferedWriter(fileWriter);                                                     bufferWritter.append("**************************************************" +  '\n');
                    bufferWritter.append(sdfMonth.format(cal.getTime()) + " " + sdfHour.format(cal.getTime()) + '\n');
                    bufferWritter.append("**************************************************" +  '\n');
                    bufferWritter.close();
                   }catch(IOException ex){
                       System.err.println("Error in Writer : " + ex);
                   }              
              }
        }
      });
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new testTime().setVisible(true);
            }
        });
    }                  
}
**************************************************
15/07/2015 23:28:52
**************************************************
**************************************************
15/07/2015 23:28:52
**************************************************
**************************************************
15/07/2015 23:28:52
**************************************************

您是否尝试过执行以下代码

Calendar cal = Calendar.getInstance();

在tryToGetUpdateTime()中,当创建
日历时,它的日期不会更改,除非您显式更改它,因此它将始终返回相同的值

其次,在我看来,您实例化整个重量级
日历
只是为了从中获取
日期
。不需要这样做,直接实例化
日期

Date date = new Date();
bufferWritter.append(sdfMonth.format(date) + " " + sdfHour.format(date) + '\n');

您认为
日历
是如何工作的?你为什么这么认为?这将实现什么?谢谢@Dragon Bozanovic,你是对的!我改为使用Date类。我已经试过了你的建议,它是有效的!