第1个回答 推荐于2020-12-31
/** * * @param year 年份 * @return */ public static boolean isLoopYear(int year){ return ((year%4==0 && year%100!=0)||(year%400==0));
} /** * * @param year 年份 * @return 获得当前日期的第一天是星期几 */ public static int getWeek(int year,int month){ long days=0,sum=0; final int MAX=366,MIN=365,Day_OF_WEEK=7; for(int y=1;y<year;y++){ days=isLoopYear(y)?MAX:MIN; sum+=days; } for(int mon=1;mon<month;mon++){ if(mon!=2){ int dy=isBig(mon)?31:30; sum+=dy; } else if(mon==2){ sum+=isLoopYear(year)?29:28; } }
int week=(int) ((sum+1)%Day_OF_WEEK); return week; } /** * * @param month月份 * 判断是大月还是小月 */ public static boolean isBig(int month){ int []mon={1,3,5,7,8,10,12}; for(int i=0,size=mon.length,y=size-1;i<=size-4;i++,y--){ if(mon[i]==month||mon[y]==month) return true; } return false; } public static int getHowDay(int currMonth,int year){ if(currMonth==2){ if(isLoopYear(year)){ return 29; } else return 28; } return isBig(currMonth)?31:30; }
public static void main(final String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入年份"); int year=sc.nextInt(); System.out.println("请输入月份"); int month=sc.nextInt(); //cal.set(2012, 9, 1); int howWeek=getWeek(year, month); System.out.println(howWeek);
String []weeks={"日","一","二","三","四","五","六"}; for(String s:weeks){ System.out.print(s+" "); } System.out.println(); int howDays=getHowDay(month,year); for(int spc=0;spc<howWeek*3-2;spc++){ System.out.print(" "); } for(int day=1;day<=howDays;day++){ System.out.print(day+" "); if((howWeek+1)%7==0){ System.out.println(); } howWeek++; } System.out.println( ); for(String s:weeks){ System.out.print(s+" "); }
}