黑马程序员 根据输入的日期计算出是一年中的第多少天

上一篇 / 下一篇  2014-07-06 22:07:04 / 个人分类:java知识


class dateDemo
{
public static void main(String[] args) throws  IOException
{
 System.out.println("请输入日期:"); 
  int month = 0,day = 0; 
  int year = 0;   
  //建立转换流
  BufferedReader bf =  
  new BufferedReader(new InputStreamReader(System.in)); 
     BufferedWriter bw = 
  new BufferedWriter(new OutputStreamWriter(System.out)); 
     String s  = null; 
     StringBuilder sb=new StringBuilder();
       while((s = bf.readLine())!=null)//判断读入是否结束
       { 
       sb.append(s);//读入数据存入容器
       year = Integer.valueOf(s.substring(0,4));  //根据索引位置从字符串中取出年份并转换为整数类型
       if(Integer.valueOf(s.substring(4,5)) == 0)//判断第四位数据是否为0,如果为0,则月份是第五位
       { 
        month = Integer.valueOf(s.substring(5,6)); 
       } 
       else{ 
        if(Integer.valueOf(s.substring(4,6)) <= 12)  //第四位数据不是0,并且第四五位的子串值小于12,则月份取第四五位。
         month = Integer.valueOf(s.substring(4,6)); 
        else 
        System.out.println("月份输入错误"); 
       } 
       if( Integer.valueOf(s.substring(6))<31)//当月的天数是从六位开始的子串,如果小于31天,则为当月天数
       {
       day = Integer.valueOf(s.substring(6));  //
       }
       else{System.out.println("你输入的天数有错");}
       
       //调用Day方法算出天数 
       System.out.println(year+"年"+month+"月"+day+"日"); 
       System.out.println("第"+SumDay(year,month,day)+"天");  //调用静态方法求出天数
       WeekDay(s);//调用静态方法求出具体的星期
     }
}

public static void WeekDay(String day)
{   
 String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; 
 SimpleDateFormat  df = new SimpleDateFormat("yyyyMMdd");//日期格式化
  
         Date  d = new Date();

           try
           { 
               d  =  df.parse(day);//parse把字符串转换为日期,格式化日期 
           }
           catch(ParseException   e)
           { 
               e.printStackTrace(); 
           }   
           for(int i=0;i<str.length;i++){ 
               if(d.getDay()==(i))    //根据取出来的数与数组角标进行比较
               { 
                   System.out.println(str[i]); 
               } 
           } 
}

public static int SumDay(long year,int month,int day)
    { 
  int daySum= 0; 
  for (int i= 1; i< month;i++){ 
      switch(i){ 
       case 1:
       case 3:
       case 5:
       case 7:
       case 8:
       case 10:  
       case 12: 
         daySum+= 31; //当月份为1,3,5,7,8,10,12时,为31天 
         break; 
       case 4:
       case 6:
       case 9:
       case 11:
        daySum+= 30;  //当月份为4,6,9,11时,为30天 
        break; 
        case 2:  
    
         if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))//闰年的判断1.能被4整除,但不能被100整除。2.能被400整除 。
      
           daySum+= 29;  // 判断是否为闰年,如果是为29天    ,如果不是为28天
         else
          daySum+= 28;     
        
      } 
   } 
   
  return daySum+day; 
 } 


TAG:

 

评分:0

我来说两句

日历

« 2024-05-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 6580
  • 日志数: 16
  • 建立时间: 2013-12-02
  • 更新时间: 2014-07-14

RSS订阅

Open Toolbar