java 根据星期得到日期_用JAVA实现给定日期是星期几的代码

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:30   2914   0
class Dateweek
{
 public static boolean ifleap(int theyear)//是否是闰年
 {
  boolean leap=false;
  leap = (theyear%400==0)| (theyear%100!=0) & (theyear%4==0);
  return leap;
 }

 public static int daybeforyear(int y,int m ,int d)
 {
  int daybefor=0;

  for(int j=1;j<=m-1;j++)
  {
   switch (j)
   {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12: 
     daybefor=daybefor+31;
     break;

    case 4:
    case 6:
    case 9:
    case 11:
     daybefor=daybefor+30;
     break;

    case 2:
     if(ifleap(y))
      daybefor=daybefor+29;
     else
      daybefor=daybefor+28;
     break;
   }
  }

  daybefor=daybefor+d;
  return daybefor-1;
 }

 public static int dayafteryear(int y1,int m1 ,int d1)
 {
  int dayafter=0;

  switch (m1)
  {
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12: 
    dayafter=31-d1;
    break;
   
   case 4:
   case 6:
   case 9:
   case 11: 
    dayafter=30-d1;
    break;

   case 2:
    if(ifleap(y1))
     dayafter=29-d1;
    else
     dayafter=28-d1;
    break;
  }

  for(int k=m1+1;k<=12;k++)
  {
   switch (k)
   {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12: 
     dayafter=dayafter+31;
     break;

    case 4:
    case 6:
    case 9:
    case 11: 
     dayafter=dayafter+30;
     break;
    
    case 2: 
     if(ifleap(y1))
      dayafter=dayafter+29;
     else
      dayafter=dayafter+28;
    break;
   }
  }
  return dayafter;
 }

 public static int daysbtmon(int y2,int tm1,int td1,int gm1,int gd1)
 {
  int daysbtm=0;

  if(tm1==gm1)
   daysbtm=gd1-td1;

  else if(gm1<tm1)
  {
   switch (gm1)
   {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12: 
     daysbtm=31-gd1;
     break;
    
    case 4:
    case 6:
    case 9:
    case 11: 
     daysbtm=30-gd1;
     break;

    case 2:
     if(ifleap(y2))
      daysbtm=29-gd1;
     else
      daysbtm=28-gd1;
     break;
   }

   for(int k1=gm1+1;k1<tm1;k1++)
   {
    switch (k1)
    {
     case 1:
     case 3:
     case 5:
     case 7:
     case 8:
     case 10:
     case 12: 
      daysbtm=daysbtm+31;
      break;

     case 4:
     case 6:
     case 9:
     case 11: 
      daysbtm=daysbtm+30;
      break;

     case 2:
      if(ifleap(y2))
       daysbtm=daysbtm+29;
      else
       daysbtm=daysbtm+28;
      break;
    }
   }

   daysbtm=daysbtm+td1;
   daysbtm=-daysbtm;
  }

  else
  {
   switch (tm1)
   {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12: 
     daysbtm=31-td1;
     break;
    
    case 4:
    case 6:
    case 9:
    case 11: 
     daysbtm=30-td1;
     break;
    
    case 2:
     if(ifleap(y2))
      daysbtm=29-td1;
     else
      daysbtm=28-td1;
     break;
   }

   for(int k1=tm1+1;k1<gm1;k1++)
   {
    switch (k1)
    {
     case 1:
     case 3:
     case 5:
     case 7:
     case 8:
     case 10:
     case 12: 
      daysbtm=daysbtm+31;
      break;

     case 4:
     case 6:
     case 9:
     case 11: 
      daysbtm=daysbtm+30;
      break;

     case 2:
      if(ifleap(y2))
       daysbtm=daysbtm+29;
      else
       daysbtm=daysbtm+28;
      break;
    }
   }

   daysbtm=daysbtm+gd1;

  }

  return daysbtm;
 }

 public static int days(int ty,int tm,int td,int gy,int gm,int gd)
 {

  int days=0;

  if(gy<ty)
  {
   days=dayafteryear(gy,gm,gd);
   
   for(int i1=gy+1;i1<ty;i1++)
   {
    if(ifleap(i1))
     days=days+366;
    
    else
     days=days+365;
   }

   days=days+daybeforyear(ty,tm,td);
   days=-days-1;
  }

  else if(gy>ty)
  {
   days=dayafteryear(ty,tm,td);

   for(int i1=ty+1;i1<gy;i1++)
   {
    if(ifleap(i1))
     days=days+366;
    
    else
     days=days+365;
   }

   days=days+daybeforyear(gy,gm,gd);
   days=days+1;
  }

  else
  {
   days=daysbtmon(ty,tm,td,gm,gd);
  }

  return days;

 }

 public static void main(String[] args)
 {
  int year=2002,month=6,day=21,week=0;
  int todayyear=2018,todaymonth=9,todayday=25,todayweek=1;
  int dayvalue=(days(2018,9,24,2018,9,30));
  System.out.println(dayvalue);

  if (dayvalue>0)
   week=(todayweek+dayvalue)%7;
  if (dayvalue<0)
   week=(todayweek+dayvalue)%7+7;

 System.out.println(week);
 }

}
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP