【问题标题】:How to Read Time and Date from Text File in Java 5?如何在 Java 5 中从文本文件中读取时间和日期?
【发布时间】:2011-07-20 20:53:00
【问题描述】:

我正在尝试使用 Java 5 SE 从纯文本文件中读取数据。数据格式如下:

10:48 AM
07/21/2011

我已经研究过 DateFormat 和 SimpleDateFormat,但我想不出将这些数据读入 Date 对象的最直接的方法。

这是我目前所拥有的:

import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

class Pim {

    File dataFile;
    BufferedReader br;
    String lineInput;
    Date inputTime;
    Date inputDate;

    public Pim() {

        dataFile = new File("C:\\Data.txt");

        try {

            br = new BufferedReader(new FileReader(dataFile));

            lineInput = br.readLine();
            inputTime = new Date(lineInput);

            lineInput = br.readLine();
            inputDate = new Date(lineInput);            

            br.close();

        } catch (IOException ioe) {

            System.out.println("\n An error with the Data.txt file occured.");
        }
    }
}

我在正确的轨道上吗?最好的方法是什么?

【问题讨论】:

    标签: java parsing datetime file-io text-files


    【解决方案1】:

    首先将这两行连接起来,得到如下内容:String date = "07/21/2011 10:48 AM"

    DateFormat formatter = new SimpleDateFormat("MM/dd/yy h:mm a");
    Date date = (Date)formatter.parse(date);
    

    这应该可行,您可以参考SimpleDateFormat API 了解更多选项。

    【讨论】:

    • 这是有道理的 - 以这种方式组合日期和时间比从两个 Date 实例开始更容易。 +1
    【解决方案2】:

    http://www.kodejava.org/examples/19.html

    根据您的格式更改 SimpleDateFormat 参数。

    【讨论】:

      【解决方案3】:

      使用诸如 Guava 之类的库,而不是编写自己的文件来读取样板代码,您可以通过以下方式摆脱困境:

       List<String> lines = 
           Files.readLines(new File("C:\\Data.txt"), Charset.forName("UTF-8"));
      
       DateFormat timeFormat = new SimpleDateFormat("hh:mm a");
       Date time = timeFormat.parse(lines.get(0));
      
       DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
       Date date = dateFormat.parse(lines.get(1));
      

      (上面的例子中省略了IOException和ParseException的处理。)

      【讨论】:

        【解决方案4】:

        试试这个,

        import java.util.Date;
        import java.text.ParseException;
        import java.text.SimpleDateFormat;
        
        public class StringToDateDemo
        {
           public static void main(String[] args) throws ParseException  
           {
              String strDate = "05/23/14 5:10 am";
              SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy h:mm a");
              Date dt = sdf.parse(strDate);
              System.out.println(dt);
           }
        }
        

        更多参考以下链接,

        https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

        https://www.flowerbrackets.com/java-convert-string-to-date/

        【讨论】:

        • 虽然问题中要求的 Java 5 是正确的,但 Java 更高版本的用户应避免使用这些麻烦的日期时间类,如瘟疫。对于 Java 8 及更高版本,请使用内置的 java.time 类。对于 Java 6 和 Java 7,请使用 ThreeTen-Backport 项目。
        猜你喜欢
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 2019-08-06
        相关资源
        最近更新 更多