创建一个日期类,其他now表示现在的日期
Calendar now = Calendar.getInstance();
//将now
这个类,赋值到year
年,month
月,date
日
now.set(year,month,date)
注意:
month
是从0开始的,而月份是从1开始的,所以month
需要加一。
0 -- 1月
1 -- 2月
...
11 -- 12月
week
是从周日开始,1表示周日...6表示周五,7表示周六
1 -- 周日
2 -- 周一
3 -- 周二
...
7 -- 周六
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
now.set(2017,2,29);
int year1 = now.get(Calendar.YEAR);
int month1 = now.get(Calendar.MONTH);
int day1 = now.get(Calendar.DATE);
System.out.println(year1 + ":" + (month1 + 1) + ":" + day1);//输出2017:3:29
//在原来的基础上加上2个月减3号
now.add(Calendar.MONTH, 2);
now.add(Calendar.DATE, -3);
int year2 = now.get(Calendar.YEAR);
int month2 = now.get(Calendar.MONTH);
int day2 = now.get(Calendar.DATE);
System.out.println(year2 + ":" + (month2 + 1) + ":" + day2);//输出2017:4:26
boolean flag = false;
//判断now这一天是否是星期5
//1表示周日...6表示周五,7表示周六
if (now.get(Calendar.DAY_OF_WEEK) == 6)
flag = true;
System.out.println(flag);//2017:4:26不是星期5
}
}
练习1 算法提高 日期计算
题目描述
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
输入只有一行
YYYY MM DD
输出格式
输出只有一行
W
数据规模和约定
1599 <= YYYY <= 2999
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5
算法分析
直接套Calendar,
注意:这里输出的星期是1 <= W <= 7
,分别代表周一到周日,我们算出来的星期天是0
,因此需要特判,若输出是0
,则输出7
,
还需要注意的是c.set(year, month - 1, date)
,月份需要减1
Java 代码
import java.util.Calendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int year = scan.nextInt();
int month = scan.nextInt();
int date = scan.nextInt();
Calendar c = Calendar.getInstance();
c.set(year, month - 1, date);
int week = c.get(Calendar.DAY_OF_WEEK) - 1;
if(week == 0) System.out.println(7);
else System.out.println(week);
}
}
练习2 算法训练 黑色星期五
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。
说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。
输入输出样例
样例输入
1998
样例输出
3、
算法分析
枚举该年每个月的13
日是不是星期5
,若是sum ++
;
Java 代码
import java.util.Calendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int year = scan.nextInt();
Calendar c = Calendar.getInstance();
int sum = 0;
for(int i = 0;i < 12;i ++)
{
c.set(year, i,13);//year年,第i个月的13号
if(c.get(Calendar.DAY_OF_WEEK) == 6)
sum ++;
}
System.out.println(sum);
}
}
网友评论