需求:旬末,计算本旬数据,月末,计算本月数据,年末,计算本年数据。

*需求:旬末,计算本旬数据,月末,计算本月数据,年末,计算本年数据。
 *例如:2019年5月31日,将计算本旬数据,本月数据。
 *2019年12月31日,将计算,本日,本旬,本月,本年数据。

 



    // 日期格式化
    public final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入日期:");
        System.out.println("退出请输入:“-退出”");
        while (true) {            
            String countStr = sc.nextLine();
            if (!"".equals(countStr) && countStr.equals("-退出")) {
                System.out.println("程序已退出!");
                break;
            }else if("".equals(countStr)){
                System.out.println(System.getProperty("line.separator"));
                System.out.println("“空格”不能生成");
                continue;                   
            }
            // 前台传递的日期字符串,或者数据库取出的日期
            String dateStr = "--2020--02-29-";
            // 字符串转日期
            Date parseDate = null;
            try {
                parseDate = sdf.parse(countStr);
            } catch (ParseException e) {
                System.out.println("无法将字符串转换成日期。请重新输入:");
                continue;
            }
            // 日历
            Calendar cd = Calendar.getInstance();
            cd.setTime(parseDate);

            System.out.println("计算日期为:" + sdf.format(cd.getTime()));
            System.out.println("开始进行分析:");

            // 分别取出日月年
            // 取年
            int yearN = cd.get(Calendar.YEAR);
            System.out.println("年:" + yearN);

            int monthN = cd.get(Calendar.MONTH) + 1;
            System.out.println("月:" + monthN);

            int dayN = cd.get(Calendar.DAY_OF_MONTH);
            System.out.println("日:" + dayN);

            // 本月的最后一天
            int actualMaximum = cd.getActualMaximum(Calendar.DAY_OF_MONTH);
            System.out.println(monthN + "月的最后一天:" + actualMaximum);
            System.out.println("--------------------");

            // 定义flag
            boolean febBoolean = false;

            // 月末
            boolean monthBoolean = false;

            // 年末
            boolean yearBoolean = false;

            // 2月
            if (monthN == 2) {
                febBoolean = true;
            }

            if (actualMaximum == dayN) {
                monthBoolean = true;
            }
           
            if (monthN == 12 && monthBoolean) {
                yearBoolean = true;
            }

            System.out.println("累计需要统计的------》:");

            System.out.print("更新" + dayN + "日数据!");
            switch (dayN) {
                case 10:
                    System.out.println(",需要更新" + monthN + "月旬数据表,上旬数据!");
                    break;
                case 20:
                    System.out.println(",需要更新" + monthN + "月旬数据表,中旬数据!");
                    break;

                case 28:
                    if (febBoolean && monthBoolean) {
                        System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
                        break;
                    }
                case 29:
                    if (febBoolean && monthBoolean) {
                        System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
                        break;
                    }
                case 30:
                    if (monthBoolean) {
                        System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
                        break;
                    }
                case 31:
                    if (monthBoolean) {
                        if (yearBoolean) {
                            System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据,本年数据!");   
                            break;
                        
                        }else {
                            System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
                            break;
                        }                   
                     }
                default:
                    System.out.println(",仅更新日数据!");
                    break;
            }
        }
    }

【以此记录】,以备后用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值