从CSV文件中读取时间戳使用Java

时间:2015-03-09 01:38:57

标签: java date csv time timestamp

我有一个包含大量数据的CSV文件。其中一列包含格式的日期和时间,星期几月份时间时区年份或“Mon Feb 23 05:30:55 +0000 2015”作为示例。

Mon Feb 23 05:30:56 +0000 2015

Mon Feb 23 05:30:56 +0000 2015

Mon Feb 23 05:30:56 +0000 2015

Mon Feb 23 05:30:56 +0000 2015

Mon Feb 23 05:30:56 +0000 2015

Mon Feb 23 05:30:55 +0000 2015

Mon Feb 23 05:30:55 +0000 2015

这些是我拥有的日期和时间数据的一些例子。但是,时间从01:00:00到上面列出的时间。

我正在尝试阅读该列时间,并在时间上查找另一列中其他数据的计数。

因此,例如,另一列包含数字等数据。

我希望找到最多显示某个数字的小时和分钟。

老实说,我不知道从哪个时间戳开始。如果我现在以字符串格式提供时间戳,如何增加时间戳呢?我只需要一小时一分钟。如何从字符串中获取该部分并将其递增?

2 个答案:

答案 0 :(得分:1)

一个起点:

String string = "Mon Feb 23 05:30:55 +0000 2015";

DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date); // Mon Feb 23 05:30:55 GMT 2015

int hours = date.getHours();
date.setHours(hours + 1);
System.out.println(date); // Mon Feb 23 06:30:55 GMT 2015

UPD:使用Calendar类的更好解决方案:

String string = "Mon Feb 23 05:30:55 +0000 2015";

DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Calendar date = Calendar.getInstance();
date.setTime(format.parse(string));
System.out.println(format.format(date.getTime())); // Mon Feb 23 05:30:55 GMT 2015          

int hours = date.get(Calendar.HOUR_OF_DAY); // 5
int minutes = date.get(Calendar.MINUTE); // 30

date.add(Calendar.HOUR_OF_DAY, 1); // add a hour
date.add(Calendar.MINUTE , 1); // add a minute
System.out.println(format.format(date.getTime())); // Mon Feb 23 06:31:55 GMT 2015

答案 1 :(得分:0)

您可以使用uniVocity-parsers轻松完成此操作:

  CsvParserSettings settings = new CsvParserSettings();
  //processes only these two fields, all others are ignored
  parserSettings.selectFields("your_calendar_field", "your_other_field");

  ObjectRowProcessor rowProcessor = new ObjectListRowProcessor();
  //converts the content of "your_calendar_field" to a java.util.Calendar.
  rowProcessor.convertFields(Conversions.toCalendar("EEE MMM dd HH:mm:ss Z yyyy")).set("your_calendar_field");

  //Creates a parser with the given settings
  CsvParser parser = new CsvParser(settings);
  parser.parse(new FileReader("your_input_file"));

  //returns all rows, ordered as defined in the field selection above,
  //with date Strings properly converted to Calendar.
  List<Object[]> parsedRows = rowProcessor.getRows();

披露:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。