给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。(2000年1月1日周六)
样例输入:
1730
1740
1750
1751
-1
样例输出:
2004-09-26 Sunday
2004-10-06 Wednesday
2004-10-16 Saturday
2004-10-17 Sunday
import java.util.Scanner;
public class Main {
@SuppressWarnings("resource")
public static void main(String[] args) {
// TODO 自动生成的方法存根
int []dm1={31,28,31,30,31,30,31,31,30,31,30,31};
int []dm2={31,29,31,30,31,30,31,31,30,31,30,31};
String []week={ "Saturday","Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
int in[]=new int[10];
int i=0;
Scanner sc = new Scanner(System.in);
for(;i<10;i++)
{
if((in[i]=sc.nextInt())==-1)
{
break;
}
}
for(int t=0;t<=i;t++)
{
if(in[t]<0)
{
break;
}
int day=in[t]%365+1;//某年的某天
int year=in[t]/365;//逝去年数
int run=(year-1)/4+1;//闰年数目
int nosp=(year/100)-(year/100)/4;//假闰年数
run=run-nosp;
int mouth=1;//月
Main m=new Main();
if(year>=1)//逝去天数超过1年
{
if((day=day-run)<=0)//除去闰年多出天数
{
while(day<=0)//闰年数超过一年天数
{
day=m.isspyear(--year)+day;
}
}
}
if(m.isspyear(year)==366)//计算月与日(闰年情况)
{
while(true)
{
if((day=day-dm2[mouth-1])>0)
{
mouth++;
}
else
{
day=day+dm2[mouth-1];
break;
}
}
}
else if(m.isspyear(year)==365)//计算月与日(非闰年情况)
{
while(true)
{
if((day=day-dm1[mouth-1])>0)
{
mouth++;
}
else
{
day=day+dm1[mouth-1];
break;
}
}
}
String Tmouth = String.format("%02d", mouth);//数字格式化
String Tday = String.format("%02d", day);
System.out.println(year+2000+"-"+Tmouth+"-"+Tday+" "+week[in[t]%7]);
}
}
public int isspyear(int year)//闰年判定
{
int issp=365;
if(year%4==0)
{
issp=366;
if(year%100==0&&year%400!=0)
{
issp=365;
}
}
return issp;
}
}