⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 date.java

📁 多功能日期计算器
💻 JAVA
字号:
//本程序可实现
//功能1:计算当前日期向后或向前数日的日期
//功能2:计算当前日期和特定日期的间隔天数
import java.io.*;
class Date
{
 private int year;
 private int mouth;
 private int day;
 
 //构造方法
 public Date (int y,int m,int d)           
 {setDate(y,m,d);
 }
 //设置初始时间
 private void setDate (int y,int m,int d)         
 {year=y;
  mouth=m;
  day=d;
 }
 //加一天
 private void addDays()             
 {int i;
  day++;
  switch(mouth)
  {case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:
        if(day>31)
         {day=1;
          mouth++;
          if(mouth==13)
            {mouth=1;
             year++;
            }
         }
         break;
   case 2:i=judgeYear(year);
          if(i==1)
           {if(day>29)
              {day=1;mouth++;}
           }
          else
           {if(day>28)
              {day=1;mouth++;}
           }
          break;
   case 4:
   case 6:
   case 9:
   case 11:if(day>30)
            {day=1;mouth++;}
  }
 }
 
 //减一天
 private void subDays()               
 {int i;
  day--;
  switch(mouth)
  {
   case 5:
   case 7:
   case 10:
   case 12:if(day==0)
            {day=30;
             mouth--;
             }
           break;
   case 3:
          if(day==0)
           {i=judgeYear(year);
            if(i==1)
              {day=29;mouth--;}
            else
              {day=28;mouth--;}
           }
          break;
   case 1:
   case 2:
   case 4:
   case 6:
   case 8:
   case 9:
   case 11:if(day==0)
            {day=31;
             mouth--;
             if(mouth==0)
              {mouth=12;year--;}
            }
  }
 }
 //判断是不是润年
 private int judgeYear(int year)     
 {int i;
  if(year%4==0) 
    i=1;
  else
    i=0;
  if((year%100==0)&&(year%400!=0))
    i=0;
  return i;
 }
 //计算当前日期与指定的某日的间隔天数
 //设置公元1年1月1日为基准点
 private int countDays(int y,int m,int d)
 {int i,n=0,k=0;
  //计算当前日期到基准点的间隔天数n
  for(i=1;i<year;i++)
  {if(judgeYear(i)==1)
     n=n+366;
   else
     n=n+365;
  }
  for(i=1;i<mouth;i++)
   {switch(i)
     {case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:n=n+31;break;
      case 2:if(judgeYear(year)==1)
               n=n+29;
             else
               n=n+28;
             break;
      case 4:
      case 6:
      case 9:
      case 11:n=n+30;break;
     }
   }
  n=n+day;
  
  //计算目标日期到基准点的间隔天数k
  for(i=1;i<y;i++)
  {if(judgeYear(i)==1)
     k=k+366;
   else
     k=k+365;
  }
  for(i=1;i<m;i++)
   {switch(i)
     {case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:k=k+31;break;
      case 2:if(judgeYear(y)==1)
               k=k+29;
             else
               k=k+28;
             break;
      case 4:
      case 6:
      case 9:
      case 11:k=k+30;break;
     }
   }
  k=k+d;
  //返回俩日期的间隔天数
 return (Math.abs(n-k));
 }
  //主方法
 public static void main (String[] args)throws IOException    
 {BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
  int y,m,d,days,j,n=0,k,p;
  String year,mouth,day,i;
  //创建新对象date
  Date date=new Date(0,0,0); 
  do{
  p=0;
  System.out.println("\n请设置当前日期");
  System.out.print(" 年份:");
  year=br.readLine();
  y=Integer.parseInt(year);
  
  System.out.print(" 月份: ");
  mouth=br.readLine();
  m=Integer.parseInt(mouth);
  
  System.out.print(" 日份: ");
  day=br.readLine();
  d=Integer.parseInt(day);
  
             
  switch(m)
   {case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:if(d>31||d<1)
              {System.out.println("日期设置错误,请重新设置");p=1;}
            break;
            
    case 4:
    case 6:
    case 9:
    case 11:if(d>30||d<1)
              {System.out.println("日期设置错误,请重新设置");p=1;}
            break;
    case 2:k=date.judgeYear(y);
          if(k==1)
           {if(d>29||d<1)
              {System.out.println("日期设置错误,请重新设置");p=1;}
           }
          else
           {if(d>28||d<1)
              {System.out.println("日期设置错误,请重新设置");p=1;}
           }
          break;
    default:System.out.println("日期设置错误,请重新设置");
            p=1;
   }
  }while(p==1);
          
  date.setDate(y,m,d);
  System.out.println("当前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
              
  do{           
  System.out.println("\n功能菜单:");
  System.out.println(" 1.向前数日");
  System.out.println(" 2.向后数日");
  System.out.println(" 3.重新设置当前日期");
  System.out.println(" 4.计算当前日期与某天的间隔天数");
  System.out.println(" 5.退出");
  System.out.print("请输入你的选择:");
  
  i=br.readLine();
  n=Integer.parseInt(i); 
  switch(n)
  {case 1:System.out.println("\n当前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
          System.out.print("向前天数:");
          String D=br.readLine();
          days=Integer.parseInt(D);
          for(j=1;j<=days;j++ )
            date.addDays();
          System.out.println("目标日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
          break;
          
   case 2:System.out.println("\n当前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
          System.out.print("向后天数:");
          String H=br.readLine();
          days=Integer.parseInt(H);
          for(j=1;j<=days;j++ )
             date.subDays();
          System.out.println("目标日期:"+date.year+"年"+date.mouth+"月"+date.day+"日");
          break;
          
   case 3:System.out.println("\n请设置当前日期");
          System.out.print(" 年份:");
          year=br.readLine();
          y=Integer.parseInt(year);
  
          System.out.print(" 月份: ");
          mouth=br.readLine();
          m=Integer.parseInt(mouth);
  
          System.out.print(" 日份: ");
          day=br.readLine();
          d=Integer.parseInt(day); 
          
          date.setDate(y,m,d); 
          System.out.println("当前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日"); 
          break; 
          
   case 4:
          System.out.println("\n设置目标日期:"); 
          System.out.print(" 年份:");
          year=br.readLine();
          y=Integer.parseInt(year);
  
          System.out.print(" 月份: ");
          mouth=br.readLine();
          m=Integer.parseInt(mouth);
  
          System.out.print(" 日份: ");
          day=br.readLine();
          d=Integer.parseInt(day); 
          
          System.out.println("\n当前日期:"+date.year+"年"+date.mouth+"月"+date.day+"日"); 
          System.out.println("目标日期:"+y+"年"+m+"月"+d+"日"); 
          System.out.println("间隔天数:"+date.countDays(y,m,d));
               
  }
 }while(n!=5);
 }
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -