时间类Calendar
取代了Date,它是一个抽象类,不同于Date,它不能被常规实例化,但提供了一个类方法getInstance,以用来获得此类型的一个通用对象。
Calendar c = Calendar.getInstance();
Date类里的大多方法它都有取代的类型
常用的几个方法如下:
/**设置固定的日期,此方法有多种不同的参数列表
*当需要对指定的日期进行操作时可先用此方法进行设置
*然后进行下面的操作
*/
Calendar.set(int year,int month,int day);
//在当前的时间上添加一个时间段
Calendar.add(Calendar.DATE,int time)
//获取当前时间
Calendar.get(Calendar.DATE);
//获取当前日是在一个月中的第几天
Calendar.get(Calendar.DAY_OF_MONTH);
//获取当前日是在一周的第几天(根据美国时间是星期日为第一天)
Calendar.get(Calendar.DAY_OF_WEEK);
//获取当前是本月的第几个星期
Calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
//获取当前日是一年的第几天
Calendar.get(Calendar.DAY_OF_YEAR);
//获取年、月、日、时、分、秒
Calendar.get(Calendar.YEAR);
Calendar.get(Calendar.MONTH);
Calendar.get(Calendar.DATE);
Calendar.get(Calendar.HOUR);
Calendar.get(Calendar.MINUTE);
Calendar.get(Calendar.SECOND);
//获取从1970年1月1日0点0分至现在所历经的毫秒数
Calendar.get(Calendar.time);
Calendar.getTime();
大致的常用方法为以上一些例子,具体使用方法还得参考API
现在运用Calendar来打印一个日历
/**首先满足的需求:输入一个日期,然后打印出这个月的所有天
*数,按照日历的格式。
*那么再分析需要实现的功能
*1.判断这个月的1号是星期几,因为日历上的1号前面可能存在上个
*月的日期,那么需要用空格代替,所以是判断空格有几个。
*2.判断这个月有多少天
*3.循环打印日历
那么接下来开始代码环节
//扫描器,输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();
//调用Calendar
Calendar c = Calendar.getInstance();
//设置时间
//因为月份是从0开始计算的(不知道为什么这样设计),所以要-1
c.set(year,month-1,1);
//接下来获取一个月有多少天,获取一个月的最大天数
//getActulMinimun:获取最小天数
int day = c.getActualMaximun(Calendar.DATE);
//接下来,确认1号的位置,确认它是星期几,得出有几个空格
int week = c.get(Calendar.DAY_OF_WEEK);
/**万事大吉,接下来就是循环打印出日历了
*先确定要循环的次数:最大天数+空格数
*也就是day+week;
*/
for(int i =1;i<=day+week;i++){
//首先打印空格,这里设定条件,当i小于week时打印空格
if(i<=week){
System.out.print(" ");
}else{//当大于week时,空格已经输出完了,接下来输出日期
//此处要注意,因为先输出的空格,这时候i已经++了几次
//但那是空格的次数,这时候日期是要从1开始,
//所以减去空格所占的几次
System.out.print(i-week+"\t");
//日历是每一周换一次行,所以这里用分支语句进行
if(i%7==0){
System.out.println(" ");
}
}
}
以上就是打印日历的代码,简单的运用了Calendar类的方法
Calnedar作为新的时间类,还有着很多用法需要去摸索,本文只是记录一下今天的学习知识,更多详情查询API。