如何拆分同一列上的日期和时间并将其存储在ArrayList中?

时间:2018-12-23 15:46:13

标签: java csv arraylist bufferedreader

我正在使用'JFreeChart'创建数据可视化程序,但在使用BufferedReader从CSV文件读取数据时遇到了麻烦。在CSV文件中,我将日期和时间存储在同一列中。我知道我必须使用“”函数将它们分开,但是我不知道该怎么做。

我曾尝试到处寻找,但我无法将手指放在上面。我需要被推到正确的轨道上。

//This is part of my Data Class

private int millis;
    private int stamp;
    private int light; 
    private double temp;
    private double vcc;
    private Time theTime;
    private Date theDate;


//This is part of another class

public class CSVreader {

    private List<Data> dataList = new ArrayList<Data>();
    private String path;

    public List<Data> getDataList() {
        return dataList;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }

    public void readCSV() throws IOException{ 

        BufferedReader in = new BufferedReader (new FileReader(path));

        String line = in.readLine();

        while(line != null) {

            Data d = new Data();

            String[] splits = line.split(",");

            int millis = Integer.parseInt(splits[0]);
            int stamp = Integer.parseInt(splits[1]);
            int light = Integer.parseInt(splits[2]);
            double temp = Double.parseDouble(splits[3]);
            double vcc = Double.parseDouble(splits[4]);

            d.setMillis(millis);
            d.setStamp(stamp);
            d.setLight(light);
            d.setTemp(temp);
            d.setVcc(vcc);

            dataList.add(d);

        }

        }

}

最终结果应该是所有数据都在一个arraylist上,我可以调出这些结果,然后可以从列表中使用JFreeChart创建一个图形。

2 个答案:

答案 0 :(得分:1)

根据您的评论,用空格splits定界符将" "数组中的3个元素分开

String dateTime[] = splits[2].split(" ");
String date = dateTime[0];
String time = dateTime[1];

但是我可以看到dateTime的数据类型不同

private Time theTime;
private Date theDate;

如果Datejava.util.Date,则可以使用SimpleDateFormat将字符串转换为Date

DateFormat formatter = new SimpleDateFormat("yyyy/dd/mm");
Date date = formatter.parse(testDate);

答案 1 :(得分:0)

根据您对日期/时间为“ 2010/5/4 21:57:35”的评论, 为了更简便的方法,可以使用Joda Time Library

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy/M/d HH:mm:ss");
DateTime dt = formatter.parseDateTime("2010/5/4 21:57:35");

然后可以从Datetime获取日期和时间值:

String time = dt.toString("HH:mm:ss");
String date = dt.toString("yyyy/M/d");

但是我看到数据类型不是String,如果要将其解析为Date数据类型,可以这样做:

Date date = dt.toDate();