我有一个包含大量数据的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到上面列出的时间。
我正在尝试阅读该列时间,并在时间上查找另一列中其他数据的计数。
因此,例如,另一列包含数字等数据。
我希望找到最多显示某个数字的小时和分钟。
老实说,我不知道从哪个时间戳开始。如果我现在以字符串格式提供时间戳,如何增加时间戳呢?我只需要一小时一分钟。如何从字符串中获取该部分并将其递增?
答案 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许可证)。