Как разделить дату и время на одном столбце и сохранить их в ArrayList? - PullRequest
0 голосов
/ 23 декабря 2018

Я создаю программу визуализации данных, используя 'JFreeChart', и у меня возникают проблемы с чтением данных из файла CSV с использованием BufferedReader.В файле 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);

        }

        }

}

Конечный результат должен состоять в том, что все данные будут в массиве, и я могу вызвать эти результаты, и из Списка я могу создать график, используяJFreeChart.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

на основе вашего комментария, чтобы прочитать дату / время '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();
0 голосов
/ 23 декабря 2018

На основании вашего комментария разделите 3 элемента в массиве splits на пробел " " разделитель

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

Но я вижу, что типы данных date и Time различны

private Time theTime;
private Date theDate;

Если Date равно java.util.Date, вы можете использовать SimpleDateFormat для преобразования строки в Date

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