如何取得当前日期对应的季度?及前面的四个季度?如当前是2009-05-13,我想得到的结果是Q2 2009(Apr - Jun),Q1 2009(Jan - Mar),Q4 2008(Oct - Dec),Q3 2008(Jul - Sep)

解决方案 »

  1.   

    是的额  先搞到月份  再用个switch
      

  2.   

    你先获取到当前的月份,然后再用switch,
    把Switch放到循环里,再循环里月份-3,
    我给你段代码,你研究一下。
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.MONTH, -1);
      

  3.   

    顶下这个!用Calendar 还是比较方便的
      

  4.   

    我随便写了个。你看看吧public class Test { public static void main(String[] args)
    {
       int Year=getYear("2009-7-13");
       int month=getMonth("2009-7-13");
           String  result=getThisSeasonTime(month)+" "+Year+getMonthToMonth(month);
           System.out.println(result);
    }
    //获取季度
        public static String getThisSeasonTime(int month){     
            String quarter="";    
            if(month>=1&&month<=3){     
             quarter="Spring";     
            }     
            if(month>=4&&month<=6){     
             quarter="Summer";       
            }     
            if(month>=7&&month<=9){     
             quarter = "Autumn";     
            }     
            if(month>=10&&month<=12){     
             quarter = "Winter";     
            }
            return quarter;
        }
        
        //获取几月到几月
        public static String getMonthToMonth(int month){     
            String monthToMonth="";    
            String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
            int index=month/4;
            monthToMonth=months[index];
            return monthToMonth;
        }
        
        //取得当前时间
        public static Date getDateTime(String dateTime){
         Date strDate=java.sql.Date.valueOf(dateTime);
            return strDate;     
        }    
     
        public static int getMonth(String dateTime)
        {
           Calendar c=Calendar.getInstance();
           c.setTime(getDateTime(dateTime));
           int month=c.get(c.MONTH)+1;
           return month;
        }
        
        public static int getYear(String dateTime)
        {
           Calendar c=Calendar.getInstance();
           c.setTime(getDateTime(dateTime));
           int year=c.get(c.YEAR);
           return year;
        }
    }
      

  5.   

        //获取几月到几月
        public static String getMonthToMonth(int month){     
            String monthToMonth="";    
            String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
            int index=month/4;
            monthToMonth=months[index];
            return monthToMonth;
        }
    这个错了。应该是:    //获取几月到几月
        public static String getMonthToMonth(int month){     
            String monthToMonth="";    
            String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
            int index=month/3;
            monthToMonth=months[index];
            return monthToMonth;
        }
      

  6.   

    我前面的错了.
    用整数1,2,3,4表示第一,二,三,四季度.
    知道月份可以用 q=(月份-1)/3+1 得到月份所在的季度.
    当前季度是q,想得到以前的季度,用(q+3-i)%4+1就可以得到以前第i季度.
    用一个for(i=1;i<=4;i++) p=(q+3-i)%4+1;就可以得到前面的4个季度不用写那么多代码.
      

  7.   

    Calendar calendar=Calendar.getInstance();
        calendar.set(Calendar.MONTH, Calendar.NOVEMBER);
        int month=calendar.get(Calendar.MONTH);
        int season=(month+1+4)/4;
        System.out.println("当前是"+season+"季度");
    至于包括当前季度的前四个季度,你完成可以用月份去算出来的。
      

  8.   


    /**
       * 根据日期获取季度
       * @param cal
       * @return
       */
      private static int getSeason(Calendar cal){
        int month=cal.get(Calendar.MONTH);
        return (month+1+3)/3;
      }
      

  9.   

    最好的方式:先获取当前的月份,再用当前月份-11个月,从那时开始一个一个季度的求,这样得出来的相当准确。
    //四个季度前的月份
    Calendar.add(Calendar.MONTH,-11)
    用这个月份一个一个求季度。另外你的问题不太明确。
    到底是只求季度还是包括月份。
    例如现在是2009-07,你的是要的是:2008第四季度,2009第一季度,2009第二季度,2009第三季度
    还是往前把所有的月份求出来:
    2009第三季度(2009-07-,?),2009第二季度(2009-04,2009-06),2009第一季度(2009-01,2009-03),2008第四季度(2008-10,2008-12)
    还有个地方不明确,2008第四季度你是取:2008第四季度(2008-12,2008-12),还是取四季度的所有???
    LZ请回答
      

  10.   


    /**
       * 根据日期获取季度
       * @param cal
       * @return
       */
      private static int getSeason(Calendar cal){
        int month=cal.get(Calendar.MONTH);
        return (month+1+3)/3;
      }
      
      /**
       * 获取从当前季度的前四个季度
       * @param cal
       * @param season
       * @return
       */
      private static void getLastFourSeason(int CurrentSeason,Calendar cal){
        if(CurrentSeason==4){
          for (int i = 1; i <=4; i++) {
            System.out.println(cal.get(Calendar.YEAR)+"年的第"+i+"季度");
          }
        }else{
          //先找到今年已过的所有季度
          for (int i = 1; i <= CurrentSeason; i++) {
            System.out.println(cal.get(Calendar.YEAR)+"年的第"+i+"季度");
          }
          //补全去年的季度
          for (int i = 1; i<=4-CurrentSeason; i++) {
            System.out.println((cal.get(Calendar.YEAR)-1)+"年的第"+(4-i+1)+"季度");
          }
        }
      }
      

  11.   

    import java.text.MessageFormat;
    import java.util.Calendar;public class Quarter {    public static void main(String[] args) {
            QuarterBean[] quarters = getRecentQuarters(5);
            for(int i = 0; i < quarters.length; i++) {
                System.out.println(quarters[i].toString());
            }
        }
        
        /**
         * 获得最近的季度
         * @param count     需要获得季度的数量
         * @return
         */
        public static QuarterBean[] getRecentQuarters(int count) {
            if(count < 1) {
                throw new IllegalArgumentException("count must be great than 0");
            }
            QuarterBean[] quarters = new QuarterBean[count];
            quarters[0] = getCurrentQuarter();
            for(int i = 1; i < quarters.length; i++) {
                quarters[i] = quarters[i - 1].getPastQuarter();
            }
            return quarters;
        }
        
        /**
         * 获得当前季度
         * @return
         */
        public static QuarterBean getCurrentQuarter() {
            Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH) + 1;
            return new QuarterBean(year, getQuarter(month));
        }
        
        /**
         * 通过月份计算季度
         * @param month
         * @return
         */
        public static int getQuarter(int month) {
            if(month < 1 || month > 12) {
                throw new IllegalArgumentException("month is invalid.");
            }
            return (month - 1) / 3 + 1;
        }
    }class QuarterBean {
        
        public final static int QUARTERS_EVERY_YEAR = 4;    
        private final static String[] QUARTERS = {
                "Q1 {0}(Jan - Mar)",
                "Q2 {0}(Apr - Jun)",
                "Q3 {0}(Jul - Sep)",
                "Q4 {0}(Oct - Dec)"       
            };
        
        private int year;
        private int quarter;    
        
        public QuarterBean(int year, int quarter) {
            if(quarter < 1 || quarter > QUARTERS_EVERY_YEAR) {
                throw new IllegalArgumentException("quarter is invalid.");
            }
            this.year = year;
            this.quarter = quarter;
        }
        
        private QuarterBean() {
            
        }
        
        public int getYear() {
            return year;
        }
        public int getQuarter() {
            return quarter;
        }    
        
        /**
         * 获得上一季度
         * @return
         */
        public QuarterBean getPastQuarter() {
            QuarterBean bean = new QuarterBean();
            int y = (QUARTERS_EVERY_YEAR + 1 - quarter) / QUARTERS_EVERY_YEAR;
            bean.year = year - y;
            bean.quarter = y * QUARTERS_EVERY_YEAR + (quarter - 1);
            return bean;
        }
        
        public String toString() {
            return MessageFormat.format(QUARTERS[quarter - 1], String.valueOf(year));
        }
    }