每次运行程序时,将java日期和时间存储到记录中

时间:2017-06-17 01:52:24

标签: java date time

我正在尝试构建Java应用程序,作为此应用程序的一部分,我想记下事件发生的日期和时间。我使用的当前代码看起来像这样:

public static void main(String[] args){
    List<String> list=new LinkedList<>();
    DateTimeFormatter formatter=DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
    LocalDateTime now=LocalDateTime.now();
    String formatDateTime=now.format(formatter);
    list.add(formatDateTime);
    System.out.println(list);
    System.out.println(formatDateTime);


}

此程序的输出现在看起来像这样:

[06-16-2017 20:35:51] 06-16-2017 20:35:51

但是,这不是我所期待的。我想存储已记录的日期和时间,但每次运行时此代码的输出都不同。有没有什么办法可以在每次程序运行时单独存储日期和时间。为了使问题有点清楚,如果我最初在20:35:51运行程序,我希望这个时间存储起来。如果我在20:36:52运行它,我仍然希望第一次在我的记录中可用。请帮我解决这个问题。感谢。

2 个答案:

答案 0 :(得分:1)

您必须将日期存储在某处,否则当您的程序结束时,变量(以及您的日期列表)将从内存中释放并丢失。

也许写入.txt或.csv文件?有关如何在线完成此操作的大量指南。然后,您可以编写一个方法来读取文件中的所有日期,这样您就可以记录您的“活动”时间。发生了/你的程序已经运行。

编辑: 我喜欢Vasyl的回答,文件浏览器很好但是有点过分,我想在这种情况下你不关心指定每次事件发生/程序运行时要写入哪个文件,你只想要吐出你的文本文件。

这是我的建议:

public static void main(String[] args) {

    List<String> list = new LinkedList<>();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
    LocalDateTime now = LocalDateTime.now();
    String formatDateTime = now.format(formatter);
    list.add(formatDateTime);
    System.out.println(list);
    System.out.println(formatDateTime);

    String recordPath = "Records.txt";
    BufferedWriter writer;
    FileWriter fw;

    try{
            fw = new FileWriter(recordPath, true);
            writer = new BufferedWriter(fw);

            for(String str : list){
                writer.write(str);
                writer.newLine();
                writer.flush();
            }

            System.out.println("Done writing!");

            writer.close();
            fw.close();


    } catch (IOException e) {
        e.printStackTrace();
    } 
}

我宁愿在最后一个块中使用.close()但是因为我们在main中工作是不可能的。理想情况下,将它放在自己的类和方法中。

.txt文件中的输出(在运行树时间之后):

06-17-2017 03:38:25
06-17-2017 03:39:52
06-17-2017 03:40:06

答案 1 :(得分:0)

存储在txt文件中的一种方法:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JFileChooser;


public class NewClass1 {

    public static void main(String[] args) {
        List<String> list = new LinkedList<>();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        String formatDateTime = now.format(formatter);
        list.add(formatDateTime);
        System.out.println(list);
        System.out.println(formatDateTime);

        File f = null;
        JFileChooser chooser = new JFileChooser();
        int returnVal = chooser.showOpenDialog(null);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            f = chooser.getSelectedFile();
        }
        try (FileWriter fw = new FileWriter(f, true);
                BufferedWriter bw = new BufferedWriter(fw);
                PrintWriter out = new PrintWriter(bw)) {
            out.println(list);
            out.println(formatDateTime);
        } catch (IOException e) {
            //exception handling left as an exercise for the reader
        }

    }
}

<强>输出:

[06-16-2017 22:16:02]
06-16-2017 22:16:02

在文件中:

[06-16-2017 22:16:02]
06-16-2017 22:16:02
[06-16-2017 22:17:29]
06-16-2017 22:17:29