这篇继续学习Calendar的成员方法:add()和set()方法。Add()方法是根据字段去向前加或者向后减相关字段的值,而set()方法是直接给某字段设置具体值,或者给某几个字段一起赋值。
1.add()方法
package otherclass;
import java.util.Calendar;
public class Demo1_Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
//c.add(Calendar.YEAR, 1);
//c.add(Calendar.YEAR, -1);
c.add(Calendar.MONTH, 1);
// 下面来拼接成一个我们看得习惯的时间,日期格式
System.out.println(c.get(Calendar.YEAR)+"年"+(getNumber(c.get(Calendar.MONTH)+1))+"月"
+getNumber(c.get(Calendar.DAY_OF_MONTH))+"日 "+getNumber(c.get(Calendar.HOUR_OF_DAY))+ ":"
+getNumber(c.get(Calendar.MINUTE))+ ":"+getNumber(c.get(Calendar.SECOND))+ " "+
getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
/*
* 写一个返回符合中国人习惯的星期几的方法
*/
public static String getWeek(int week) {
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
// 注意上面数组索引对应的星期,1表示星期日,索引0空着,因为Calendar.get(Calendar.DAY_OF_WEEK)的范围是1到7
return arr[week];
}
/*
* 月份,天和时分秒补齐0
*/
public static String getNumber(int num) {
return (num > 9)? "" + num : "0" + num;
}
}
输出:2018年05月25日 18:20:29 星期五
2.set()方法
package otherclass;
import java.util.Calendar;
public class Demo1_Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
//c.set(Calendar.YEAR, 2008);
//c.set(Calendar.MONTH,7); //注意这里7表示八月份
//c.set(2008, 7, 8); //直接设置2008-08-08
c.set(2008, 7, 8, 20, 8, 8); //设置年月日时分秒
// 下面来拼接成一个我们看得习惯的时间,日期格式
System.out.println(c.get(Calendar.YEAR)+"年"+(getNumber(c.get(Calendar.MONTH)+1))+"月"
+getNumber(c.get(Calendar.DAY_OF_MONTH))+"日 "+getNumber(c.get(Calendar.HOUR_OF_DAY))+ ":"
+getNumber(c.get(Calendar.MINUTE))+ ":"+getNumber(c.get(Calendar.SECOND))+ " "+
getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
/*
* 写一个返回符合中国人习惯的星期几的方法
*/
public static String getWeek(int week) {
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
// 注意上面数组索引对应的星期,1表示星期日,索引0空着,因为Calendar.get(Calendar.DAY_OF_WEEK)的范围是1到7
return arr[week];
}
/*
* 月份,天和时分秒补齐0
*/
public static String getNumber(int num) {
return (num > 9)? "" + num : "0" + num;
}
}
输出:2008年08月08日 20:08:08 星期五
3.编程练习
题目:如何获取任意年份是平年还是闰年
分析:
1)键盘输入年,需要Scanner类
2)创建Calendar对象
3)通过set方法设置那一年的3月1日
4)将3月1日向前减去1
5)判断,如果是29天是闰年,否则返回false
package otherclass;
import java.util.Calendar;
import java.util.Scanner;
public class Demo2_Calendar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个年份,判断是闰年还是平年");
int year = sc.nextInt();
boolean b = getYear(year);
System.out.println(b);
}
public static boolean getYear(int year) {
//2.创建Calendar对象
Calendar c = Calendar.getInstance();
//3.位置那一年的三月1日
c.set(year, 2, 1); // 三月需要写成2
//4.将日减去1
c.add(Calendar.DAY_OF_MONTH, -1);
//5.判断是否是29天
return c.get(Calendar.DAY_OF_MONTH) == 29;
}
}