zoukankan      html  css  js  c++  java
  • 月份、季度、周

    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author fan
     */
    public class Test {
        
        private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        
        public static void main(String[] args) throws Exception{
            System.out.println(getMonthList());
            System.out.println(getQuarterList());
            System.out.println(getWeekList());
        }
        
        /**
         * 获取当前时间向前推12月的时间列表
         * */
        public static List<Object> getMonthList(){
            // 获取当前时间往前推12个月的年-月列表
            List<Object> monthList = new ArrayList<Object>();
            for(int i=1; i<=12; i++){
                Map<String, Object> date = getMonthInfo(i);
                monthList.add(date.get("month"));
            }
            return monthList;
        }
        
        /**
         * 获取月列表
         * @param n
         * @return
         */
        private static Map<String, Object> getMonthInfo(int n){
            Map<String, Object> monthMap = new HashMap<String, Object>();
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.MONTH, -n);
            SimpleDateFormat sfM = new SimpleDateFormat("yyyy-MM");
            monthMap.put("month", sfM.format(calendar.getTime()));
            
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            monthMap.put("start", dateFormat.format(calendar.getTime()));
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));
            monthMap.put("end", dateFormat.format(calendar.getTime()));
            return monthMap;
        }
        
        /**
         * 获取当前时间向前推4个季度的时间列表
         * */
        public static List<Object> getQuarterList(){
            List<Object> quarterList = new ArrayList<Object>();
            for(int i=1; i<=4; i++){
                Map<String, Object> date = getQuarterInfo(i);
                quarterList.add(date.get("year").toString()+"年"+date.get("quarter"));
            }
            return quarterList;
        }
        
        /** 
         * 从当前时间往前推几个季度
         * n:正数:向前推几个季度;负数向后推几个季度 
         * @return 
         * 例如:当前时间是2016-12-23,则getQuarterInfo(1)==>{start=2016-07-01, year=2016, end=2016-09-30, quarter=第三季度}
         *                           getQuarterInfo(2)==>{start=2016-04-01, year=2016, end=2016-06-30, quarter=第二季度}
         *                           getQuarterInfo(3)==>{start=2016-01-01, year=2016, end=2016-03-31, quarter=第一季度}
         *                           getQuarterInfo(4)==>{start=2015-10-01, year=2015, end=2015-12-31, quarter=第四季度}
         *                           getQuarterInfo(-1)==>{start=2017-01-01, year=2017, end=2017-03-31, quarter=第一季度}
         */  
        public static Map<String, Object> getQuarterInfo(int n) {
            Calendar startCalendar = Calendar.getInstance();  
            startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - n) * 3);
            startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
              
            Calendar endCalendar = Calendar.getInstance();  
            endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - n) * 3 + 2);
            endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
            // 存储季度信息
            Map<String, Object> quarterMap = new HashMap<String, Object>();
            // 季度
            switch(startCalendar.get(Calendar.MONTH) + 1){
                case 1 : quarterMap.put("quarter", "第一季度"); break;
                case 4 : quarterMap.put("quarter", "第二季度"); break;
                case 7 : quarterMap.put("quarter", "第三季度"); break;
                case 10 : quarterMap.put("quarter", "第四季度");
            }
            // 年份
            quarterMap.put("year", startCalendar.get(Calendar.YEAR));
            // 季度开始时间(天)
            quarterMap.put("start", dateFormat.format(startCalendar.getTime()));
            // 季度结束时间(天)
            quarterMap.put("end", dateFormat.format(endCalendar.getTime()));
            return quarterMap;
        }
        
        public static List<Object> getWeekList(){
            List<Object> weekList = new ArrayList<Object>();
            for(int i=1; i<=52; i++){
                Map<String, Object> week = getWeekInfo(i);
                weekList.add(week.get("year").toString()+"年"+week.get("week").toString()+"周");
            }
            return weekList;
        }
        
        /**
         * 向前推多少周正数向前,负数向后
         * @param n
         */
        public static Map<String, Object> getWeekInfo(int n){
            Map<String, Object> weekMap = new HashMap<String, Object>();
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            if(1 == calendar.get(Calendar.DAY_OF_WEEK)) {  
                calendar.add(Calendar.DAY_OF_MONTH, -1);
            }
            // 设置周一为第一天
            calendar.setFirstDayOfWeek(Calendar.MONDAY);
            calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - calendar.get(Calendar.DAY_OF_WEEK) - 7 * n);
            weekMap.put("week", calendar.get(Calendar.WEEK_OF_YEAR));
            weekMap.put("start", dateFormat.format(calendar.getTime()));
            calendar.add(Calendar.DATE, 6);
            weekMap.put("year", calendar.get(Calendar.YEAR));
            weekMap.put("end", dateFormat.format(calendar.getTime()));
            return weekMap;
        }
    
    }

        

  • 相关阅读:
    模板
    Codeforces Round #598 (Div. 3)
    Codeforces Round #589 (Div. 2)
    日记集
    模板
    Codeforces Round #592 (Div. 2)
    Linux挂载新盘
    VMware实用技巧
    useradd和adduser的区别
    ubuntu VSFTPD搭建FTP服务器 提示530错误
  • 原文地址:https://www.cnblogs.com/siv8/p/6215069.html
Copyright © 2011-2022 走看看