通过例子快速使用java的calendar类
1.获取目前时间,get方法
Calendar c=Calendar.getInstance();//获取一个日历类的实例
//获取当前时间
int year=c.get(Calendar.YEAR);//获取电脑时间现在是哪一年,想改哪年就改哪年。
int month = c.get(Calendar.MONTH)+1;//获取月,值为0-11,真实月份需加1
int day = c.get(Calendar.DATE);//获取日
int hour = c.get(Calendar.HOUR_OF_DAY);//获取时,默认24小时制
int minute = c.get(Calendar.MINUTE);//获取分
int second = c.get(Calendar.SECOND);//获取秒
System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
2.设置目标时间,set方法
2.1快捷设置
//快捷设置
c.set(1998,5,2);//设置一个日历,年月日,真实月是+1的,所以其实这设置的是6月
c.set(1998,5,2,5,36);//年月日时分
c.set(1998,5,2,5,36,55);//年月日时分秒
2.2逐个设置
//逐个设置,不设置的获取的话就是直接获取电脑上的时间
c.set(Calendar.YEAR, 1998);//设置年
c.set(Calendar.MONTH, 5);//设置月,这是6月
c.set(Calendar.DATE, 2);//设置日
c.set(Calendar.HOUR_OF_DAY, 5);//设置时
c.set(Calendar.MINUTE, 36);//设置分
c.set(Calendar.SECOND, 55);//设置秒
3.增加时间,add方法
//测试add方法,数字正负都无所谓
c.add(Calendar.YEAR, 30);//加到个石油消失年
c.add(Calendar.MONTH, 12);//加12就变回现在的月,并不会报错
c.add(Calendar.DATE, 367);//这是按照今年的日来计算了,我这一年刚好闰年,加366天还是29号,这是个坑要慎用
c.add(Calendar.HOUR_OF_DAY, 24);//加多少个小时,过了24小时自动余24
c.add(Calendar.MINUTE, 60);//加多少分钟,过了60分钟自动余60
c.add(Calendar.SECOND, 61);//加多少秒,过了60自动余60
4.其他常用
Calendar c=Calendar.getInstance();//获取一个日历类的实例
int zhouji = c.get(Calendar.DAY_OF_WEEK);//获取今天是周几,周日是1,周六是7
int this_month_max_day = c.getActualMaximum(Calendar.DAY_OF_MONTH);//获取这个月最多有多少天
Date date = c.getTime();//获取一个date类,打印为Sat Feb 29 15:08:02 CST 2020
5.其他常用
5.1 今天是周几
Calendar c=Calendar.getInstance();//获取一个日历类的实例
//查看今天是周几
int zhouji = c.get(Calendar.DAY_OF_WEEK);//获取这个月的第一天是周几,周日是1,周六是7
if (zhouji==1){
zhouji=7;
}else{
zhouji=zhouji-1;
}
System.out.println("今天是周"+zhouji);
测试结果
5.2 当月第一天是周几
//获取当月第一天是周几
//1.先把时间设置为这个月的第一天
Calendar c=Calendar.getInstance();//获取一个日历类的实例
c.set(Calendar.YEAR, 2020);//年月可以不设置,但是为了方便更换。
c.set(Calendar.MONTH, 1);//今天是2020年2月29日,设置1就是2月的意思,这是0-11月制的
c.set(Calendar.DATE, 1);//设置为当月第一天
//2.获取这天为周几
int zhouji = c.get(Calendar.DAY_OF_WEEK);//获取这个月的第一天是周几,周日是1,周六是7
if (zhouji==1){
zhouji=7;
}else{
zhouji=zhouji-1;
}
//3.得到本月第一天是周几,如果要做日历的话前面空的就只需要让周几-1
System.out.println("本月第一天是周"+zhouji);
测试结果
5.3 根据输入日期打印日期表
import java.util.Calendar;
import java.util.Scanner;
public class TestCalendar {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入年份");
int year = scanner.nextInt();
System.out.println("请输入月份");
int month = scanner.nextInt();
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH,month-1);//要设置为输入的-1,因为是0-11制的
write(calendar);
}
//因为太乱,所以定义一个方法会好一点
public static void write(Calendar calendar) {
int a=0;
System.out.println("--------------------"+calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月-------------------");
System.out.println("一\t二\t三\t四\t五\t六\t日");
//获取当月第一天是周几
calendar.set(Calendar.DATE, 1);
int zhouji = calendar.get(Calendar.DAY_OF_WEEK);//获取这个月的第一天是周几,周日是1,周六是7
if (zhouji==1){
zhouji=7;
}else{
zhouji=zhouji-1;
}
//打印空制表符
for (int j = 1; j < zhouji; j++) {
System.out.print("\t");
a++;
}
for (int j = 1; j <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); j++) {
System.out.print(j+"\t");
a++;
if (a%7==0) {//从空制表符开始每7个就换行
System.out.println();
}
}
}
}
测试结果1:
测试结果2:
总结
- 虽然这很不起眼,但是每次我写日历类都要百度搜,所以如今写博客还不如把这些常用的比如calendar,date,string,map,list都写一遍,以后好翻阅查看,记是不可能记的,这辈子都不可能记的,只有谢谢博客混混日子的样子了,网上的各位都是人才,点个赞不过分吧。