使用Calendar这个API去处理时间问题
题目描述:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
整个 2020 世纪(19011901 年 11 月 11 日至 20002000 年 1212 月 3131 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
package N_2013;
import java.time.Month;
import java.util.Calendar;
/**
* @author yx
* @date 2022-03-07 11:57
*/
public class Calendar类的调用 {
public static void main(String[] args) {
int ans = 0;
Calendar c = Calendar.getInstance();
for (int year = 1901; year <= 2000; ++year) {
for (int month = 0; month <= 11; ++month) {
c.clear(); // important
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);//获取该月的最大天数
for (int day = 1; day <= maxDay; ++day) {
c.set(Calendar.DAY_OF_MONTH, day);
if (c.get(Calendar.DAY_OF_WEEK) == 2)ans++;//老外都是周日算一周的第一天
}
}
}
System.out.println(ans); // ans: 5217
}
}
题解分析: 使用Calendar这个API去解决与时间相关的问题
难点分析:
1、实例化Calendar类之后,要先调用clear()方法清空缓存
2、调用getActualMaximum(Calendar.DAY_OF_MONTH)方法获取该月份的最大天数
题目描述:世纪末的星期
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。 还有人称今后的某个世纪末的12月31日,如果是星期一则会…
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,“谣言制造商”又修改为星期日…
1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份?
(本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可)
package N_2013;
import java.util.Calendar;
/**
* @author yx
* @date 2022-03-06 16:26
*/
/*
calendar计算日期这个API的调用
calender这个API的调用(只能用于1970年以后)
*/
public class 世纪末的星期01 {
public static void main(String[] args) {
Calendar calendar=Calendar.getInstance();//创建一个Calendar的实例化对象
for(int year=1999;year<10000;year+=100){//因为年份要求结尾必须是(xx99年)
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,11);//这个是十二月,因为国外是从0开始算第一个月的
calendar.set(Calendar.DAY_OF_MONTH,31);
if(calendar.get(Calendar.DAY_OF_WEEK)==1){//这里表示的是周日,因为国外是从周日开始算第一天的
System.out.println(year);
break;
}
}
}
}
题解分析:使用Calendar这个API去解决与时间相关的问题
难点分析:
1、熟练掌握Calendar的各种方法调用
例如:
calendar.set(Calendar.YEAR,year);//修改年份
calendar.set(Calendar.MONTH,11);//固定
calendar.set(Calendar.DAY_OF_MONTH,31);//固定日期
2、熟悉Calendar方法的底层源码
例如:
calendar.set(Calendar.MONTH,11) //月份是从0开始计算的
calendar.get(Calendar.DAY_OF_WEEK)//国外是从周日开始算第一天的
蓝桥每日一题,最后冲刺,希望大家最后都能取得好成绩!!