A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:计算任意一个时间段内的周末和周日的天数
* 思路:
*         1.获取时间段的天数
*                 如果是同一年,直接获取:        end_year(DAY_OF_YEAR) - begin_year(DAY_OF_YEAR)
*                
*                 如果时间段不是同一年,需要计算begin_year 的剩余天数,和end_year这一年的起始天数,
*                 再计算end_year减去begin_year这几年的总天数       
*                 最后天数还要+1,因为两头都要遍历       
*        
*         2.进行遍历,假如某天为周末或周日,计数器就加1,每遍历一次就向后
*                 加一天:c.add(Calendar.DAY_OF_MONTH,1);
*        
不知道自己实现的方式是否有些复杂,是否有简单的方式,求高手指点
  1. package cn.xushuai.io;

  2. import java.util.Calendar;

  3. class calendarDemo3{

  4.         public static void main(String[] args){
  5.                
  6.         getDays();

  7.         }
  8.                
  9.         public static void getDays(){
  10.                
  11.                 Calendar c = Calendar.getInstance();
  12.        
  13.                 int begin_year =2012;
  14.                 int begin_month =0;
  15.                 int begin_day =1;
  16.                
  17.                 int end_year =2012;
  18.                 int end_month =11;
  19.                 int end_day =31;
  20.                
  21.                
  22.                
  23.                 c.set(begin_year,begin_month,begin_day);  
  24.                 //int begin_year = c.get(Calendar.YEAR);
  25.        
  26.                 Calendar c2 = Calendar.getInstance();
  27.                 c2.set(end_year,end_month,end_day);
  28.                
  29.                
  30.         //获取遍历次数       
  31.                 int count = 0;
  32.                 if(end_year > begin_year){
  33.                         int years = end_year - begin_year ;
  34.                        
  35.                 //begin_year 的剩余天数
  36.                         int day = c.get(Calendar.DAY_OF_YEAR);
  37.                         c.set(begin_year, 11,31);
  38.                         int day2 = c.get(Calendar.DAY_OF_YEAR);
  39.                        
  40.                         int begin_year_days = day2-day;
  41.                         count = count +(begin_year_days);
  42.                          
  43.                         System.out.println(count);
  44.                        
  45.                 //end_year的天数
  46.                          int end_year_days =c2.get(Calendar.DAY_OF_YEAR);
  47.                        
  48.                         count+=end_year_days;
  49.                        
  50.                 //end_year减去begin_year的这几年的总天数
  51.                         for(int i=begin_year+1;i<years;i++){
  52.                                
  53.                                 c.set(i,0,1);
  54.                                 int year_days = c.get(Calendar.DAY_OF_YEAR);                       
  55.                                 count = year_days+count;
  56.                                
  57.                         }
  58.                 }else if(begin_year == end_year){       
  59.                        
  60.                         int beginday = c.get(Calendar.DAY_OF_YEAR);
  61.                         int endday = c2.get(Calendar.DAY_OF_YEAR);
  62.                        
  63.                         //begin_day和end_day,都要遍历,所以+1
  64.                         count+= (endday - beginday)+1;
  65.                         System.out.println(count);
  66.                        
  67.                 }else{
  68.                        
  69.                         System.out.println("请输入正确的日期格式 !");
  70.                         return;
  71.                 }
  72.                        
  73.                         int holiday = 0;
  74.                         c.set(begin_year,begin_month,begin_day);
  75.                         for(int i=0 ; i< count;i++){
  76.                                
  77.                                 int weekday_flag = c.get(Calendar.DAY_OF_WEEK);
  78.                                 if(weekday_flag ==1 || weekday_flag == 7){
  79.                                         holiday++;
  80.                                 }
  81.                                 c.add(Calendar.DAY_OF_MONTH,1);
  82.                         }
  83.                                 System.out.println("一共有:"+holiday+"天假期");
  84.                  
  85.                 }
  86. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马