关于Java类Calendar做统计时 获取日期的一些常见操作

1、获取本周的周一到周日

 //通过调整日历,获得本天所属周的周一和周日
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal=new GregorianCalendar(); cal.setFirstDayOfWeek(Calendar.MONDAY); cal.setTime(new Date()); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); String startTime1 = sdf.format(cal.getTime()); cal.set(Calendar.DATE, cal.get(cal.DATE) + 6); String endTime1 = sdf.format(cal.getTime()); date = startTime1+"~"+endTime1;

2、根据本周的时间获得上周的周一和周日Calendar calendar = Calendar.getInstance();

  Calendar calendar = Calendar.getInstance();

calendar.setTime(startTime);//startTime当前查询周的周一(不一定是本周,也可以是指定查询某一天的周一) 
calendar.set(Calendar.DATE, calendar.get(calendar.DATE) -1);
end2 = sdf.parse(sdf.format(calendar.getTime()));
calendar.set(Calendar.DATE, calendar.get(calendar.DATE) -6);
start2 = sdf.parse(sdf.format(calendar.getTime()));

 3、按照查询的某周的周一到周日获取指定周的周数据

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //遍历日期来查询,保证一天一查,查询结果是对的
            Calendar c = Calendar.getInstance();
            c.setTime(startTime);
            Date time = sdf.parse(sdf.format(c.getTime()));
            while(time.getTime()<=endTime.getTime())
            {
                //不是今天
                if(time.getTime()!=sdf.parse(sdf.format(new Date())).getTime())
                {
                    SalesOrderStatDay dayObj = salesOrderStatDayDAO.getDataByDate(userId,time);
                    list.add(dayObj);
                }
                else
                {
                    //统计一下今天的报单数据,因为后台数据是使用quartz定时任务在零点才去统计当天数据,为了能看到当天数据 只能去实时查询
                    SalesOrderStatDay dayObj = getTodayData(userId);
                    list.add(dayObj);
                }
                c.add(Calendar.DATE, 1);
                time = sdf.parse(sdf.format(c.getTime()));//从周一加到周日
                
                
            }

4、获取指定月份

sdf= new SimpleDateFormat("yyyy-MM");
            Calendar calendar = Calendar.getInstance();
            try {
                calendar.setTime(sdf.parse(month));
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            calendar.set(calendar.MONTH, calendar.get(calendar.MONTH) -1);//进行减一操作,因为系统计算月份是从0开始
            date2 = sdf.format(calendar.getTime());

5、按照月份查询每一天数据

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM");
            SimpleDateFormat sdflll= new SimpleDateFormat("yyyy-MM-dd");
            Date today = sdflll.parse(sdflll.format(new Date()));
            Calendar cal = Calendar.getInstance();
            cal.setTime(sdf.parse(date));
            //总天数
            int dayNum = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
            cal.set(Calendar.DAY_OF_MONTH,1);
            for(int i=1;i<=dayNum;i++)
            {
                Date time = sdflll.parse(sdflll.format(cal.getTime()));
                //不是今天
                if(cal.getTime()!=today.getTime())
                {
                    SalesOrderStatDay dayObj = salesOrderStatDayDAO.getDataByDate(userId,time);
                    list.add(dayObj);
                }
                else
                {
                    //统计一下今天的报单数据
                    SalesOrderStatDay dayObj = getTodayData(userId);
                    list.add(dayObj);
                }
                cal.add(Calendar.DATE, 1);//日期加一
                
            }

 6、统计一天24小时数据

//查询每个小时内这些店铺的订单
            if (StringUtils.isNotBlank(date)) {
                for (int i=0; i<24; i++) {
                    if (i<10) {
                        list.add(salesOrderStatDayDAO.showSalesOrderOnDay(shopList,date+" 0"+i,status,leiXing));
                    } else {
                        list.add(salesOrderStatDayDAO.showSalesOrderOnDay(shopList,date+" "+i,status,leiXing));
                    }
                }
            }

 

转载于:https://www.cnblogs.com/lxk233/p/10024751.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值