天天看点

Java常见对象Calendar类-36-set和add方法以及判断是否是闰年

       这篇继续学习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;
   }
}
           

继续阅读