标题: 世纪末的星期
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!
于是,“谣言制造商”又修改为星期日......
1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份(只写这个4位整数,不要写12月31等多余信息)
正确答案:2299
第一种解决:
import java.util.Date;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
//闰年 4 !100 |400
for(int i=1999;i<=9999;i+=100){
Date date=new Date(i-1900,12-1,31);//注意月份-1
if(date.getDay()==0){//周日的下标是0
System.out.println(i);
break;
}
}
}
}
/*
Date date=new Date(year,month,date,hrs,min,sec);
或
Date date=new Date(year,month,date);
分配 Date 对象并初始化此对象,以表示本地时区中由 year、month、date(hrs min sec)
参数:
year - 减 1900 的年份。
month - 0-11 之间的月份。
date - 一月中 1-31 之间的某一天。
hrs - 0-23 之间的小时数。
min - 0-59 之间的分钟数。
sec - 0-59之间的秒数。
或
Date date=new Date(long date);
用长整数date创建Date对象,date表示从1970年1月1日00:00:00时开始到该日期时刻的微妙数。
date.getDay();
返回此日期表示的周中的某一天。
返回值 (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天,该周包含或开始于此 Date 对象所表示的瞬间(用本地时区进行解释)。
注意周日返回的是0;
返回:
此日期所表示的一周中的某一天。
date.getDate();
返回的是此日期所表示的月份中的某一天。
*/
第二种解决:
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1999;i<=9999;i+=100){
Calendar calendar=Calendar.getInstance();
calendar.set(i,12-1,31);
if(calendar.get(Calendar.DAY_OF_WEEK)-1==0){
System.out.println(i);
break;
}
}
}
}
/*
Calendar calendar=Calendar.getInstance();
创建Calendar对象,的到当前系统的日期时间。
calendar.set(YEAR,MONTH,DAY_OF_MONTH);
calendar.set(YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE);
calendar.set(YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE,SECOND);
设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。
参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
hourOfDay - 用来设置 HOUR_OF_DAY 日历字段的值。
minute - 用来设置 MINUTE 日历字段的值。
second - 用来设置 SECOND 日历字段的值。
calendar.get(field);获取对象属性field的值
例如:
Calendar.DAY_OF_WEEK表示一个星期中的某天。
该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。
所以周日的下标为1,返回值为1.
*/