把日期按照天输出

来源:互联网 发布:大数据培训学校 编辑:程序博客网 时间:2024/05/17 04:22
package zjt.xl;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;public class HindenVehicleVoTest{public static void main(String[] args) {getListPicture();}public static void getListPicture(){//查询出所有记录List<Date> dates =  new ArrayList<Date>();//数据源List<String> ls = new ArrayList<String>();ls.add("2014-01-21 19:00:00");//ls.add("2014-01-21 19:42:40");//ls.add("2014-01-21 21:16:59");//ls.add("2014-01-22 06:10:11");//ls.add("2014-01-22 07:37:45");//ls.add("2014-01-22 09:15:13");//ls.add("2014-01-22 11:06:23");//ls.add("2014-01-22 16:59:31");//ls.add("2014-01-22 19:25:18");//ls.add("2014-01-22 21:14:00");//ls.add("2014-01-23 06:18:42");//ls.add("2014-01-23 07:48:10");//ls.add("2014-01-23 09:25:59");//ls.add("2014-01-23 17:49:10");//ls.add("2014-01-23 19:55:28");//ls.add("2014-01-23 22:20:49");//ls.add("2014-01-24 06:05:17");//ls.add("2014-01-25 07:35:04");//ls.add("2014-01-24 09:14:56");//ls.add("2014-01-24 11:06:20");//ls.add("2014-01-27 14:06:20");//ls.add("2014-01-27 17:06:20");for (String dateStr : ls) {dates.add(getDateByStr(dateStr));}Calendar calendar1 = Calendar.getInstance();calendar1.set(2014,0,24,18,12,50); //月份要减一,才是正常月份Date date  = calendar1.getTime();Integer dayNum = 3;Date preDate = getNextNDay(date, -dayNum); //取得开始时间Date aftDate = getNextNDay(date, dayNum); //取得结束时间Date queryDate = null;//封装时间段序列List<Date> dateList = new ArrayList<Date>();dateList.add(preDate);for (int i = 1; i < (dayNum * 2) + 1; i++) {queryDate = getNextNDay(preDate, i);dateList.add(singleDate(queryDate)); //截断点时间只保留日期时间格式}dateList.add(aftDate);for (Date date2 : dates) {System.out.println("date:" + getAllDate(date2));}System.out.println("****************************************");//封装查询数据Map<String,Long> map = new LinkedHashMap<String,Long>();if(dates.isEmpty() || dates.size() == 0){/** * 走默认流程,给每个点时间上都赋值默认值 */for (int i = 0;i<dateList.size()-1;i++) {map.put(getAllDate(dateList.get(i)), 0L);}return;}Long count = 0L;String key = null;int j = 0;/** * 处理前段时间没有值的情况 */Boolean flagx = isTimeInPeriod(dateList.get(0),dateList.get(1),dates.get(0));if(!flagx){key =  getAllDate(dateList.get(0));map.put(key, count); //在存入}for (int i = 0;i<dates.size();i++) { //外层循环Boolean flag = isTimeInPeriod(dateList.get(j),dateList.get(j+1),dates.get(i)); //进行比较操作,看是否在区间内/** * 在这个区域中 */if(flag){ //在区间内 计数加一if(key !=null){ //key存入的是最小值count = map.get(key) + 1;//取出来加和map.put(key, count); //在存入}else{key  = getAllDate(dateList.get(j));count++;map.put(key, count);}}else{/** * 不在这个区域内 */// 大于最大时间,就是大于dateList.get(j+1)了//            判断是否超过日期段最大值(边界: < size-1 ----因为j+1)//       j+1 计数加一if(j+1 < dateList.size()-1){//这里j+1 == dateList.size()长度-1//if(i==0){ //当第一次进入的时候,最小点的区间没值,那么就记录最小时间点////}i--;count = 0L;key = getAllDate(dateList.get(j+1)); //新的时间段标识,还要处理,前几个时间段没值,中间的时间端没值,该怎么记录map.put(key, count);j++;//走到下一个时间段}}}/** * 处理后面的时间端没有值的情况 */for(;j+1 <dateList.size()-1;){map.put(getAllDate(dateList.get(j+1)), 0L);j++;}for(Map.Entry<String, Long> mapx : map.entrySet()){System.out.println(mapx.getKey() + " \t " + mapx.getValue());}}private static Date singleDate(Date queryDate) {Calendar calender = new GregorianCalendar();calender.setTime(queryDate);calender.set(Calendar.HOUR_OF_DAY, 0);calender.set(Calendar.MINUTE, 0);calender.set(Calendar.SECOND, 0);calender.set(Calendar.MILLISECOND, 0);return calender.getTime();}private static String getAllDate(Date preDate) {return dateFormat(preDate);}private static Date getNextNDay(Date date, int i) {Calendar calendar = new GregorianCalendar();calendar.setTime(date);calendar.add(Calendar.DAY_OF_MONTH, i);return calendar.getTime();}private static Boolean isTimeInPeriod(Date date, Date date2, Date date3) {Boolean flaghead = date.before(date3);Boolean flagtail = date2.after(date3);return flaghead && flagtail ;}public static String dateFormat(Date date){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(date);}public static Date getDateByStr(String dateStr){if(dateStr!=null && !"".equals(dateStr)){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {return sdf.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}}return null;}}

要求按照天输出,统计

19次
2014-01-21 19:42:40
2014-01-21 21:16:59
2014-01-22 06:10:11
2014-01-22 07:37:45
2014-01-22 09:15:13
2014-01-22 11:06:23
2014-01-22 16:59:31
2014-01-22 19:25:18
2014-01-22 21:14:00
2014-01-23 06:18:42
2014-01-23 07:48:10
2014-01-23 09:25:59
2014-01-23 17:49:10
2014-01-23 19:55:28
2014-01-23 22:20:49
2014-01-24 06:05:17
2014-01-24 07:35:04
2014-01-24 09:14:56
2014-01-24 11:06:20
结构:
2014-01-21 19:42:40 2
2014-01-22 7
2014-01-23 6
2014-01-24 4
2014-01-25 0
2014-01-26 0
2014-01-27 0




0 0
原创粉丝点击