java的Calendar总结

Calendar的声明

public abstract class Calendar extends Objectimplements Serializable, Cloneable, Comparable<Calendar>

  该类被abstract所修饰,说明不能通过new的方式来获得实例,对此,Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象,getInstance方法返回一个Calendar对象(该对象为Calendar的子类对象),其日历字段已由当前日期和时间初始化:

Calendar rightNow = Calendar.getInstance();

 Calendar常用的方法

 package com.test.calendar;
  
  import java.util.Calendar;
  
  import org.junit.Before;
  import org.junit.Test;
  
  public class CalendarDemo {
      Calendar calendar = null;
 
     @Before
     public void test() {
         calendar = Calendar.getInstance();
     }
 
     // 基本用法,获取年月日时分秒星期
     @Test
     public void test1() {
         // 获取年
         int year = calendar.get(Calendar.YEAR);
 
         // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
         int month = calendar.get(Calendar.MONTH) + 1;
 
        // 获取日
         int day = calendar.get(Calendar.DAY_OF_MONTH);
 
         // 获取时
         int hour = calendar.get(Calendar.HOUR);
         // int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示

         // 获取分
         int minute = calendar.get(Calendar.MINUTE);
 
         // 获取秒
        int second = calendar.get(Calendar.SECOND);
 
         // 星期,英语国家星期从星期日开始计算
         int weekday = calendar.get(Calendar.DAY_OF_WEEK);

         System.out.println("现在是" + year + "年" + month + "月" + day + "日" + hour
                 + "时" + minute + "分" + second + "秒" + "星期" + weekday);
     }
 
     // 一年后的今天
     @Test
     public void test2() {
         // 同理换成下个月的今天calendar.add(Calendar.MONTH, 1);
         calendar.add(Calendar.YEAR, 1);
 
         // 获取年
         int year = calendar.get(Calendar.YEAR);
 
         // 获取月
         int month = calendar.get(Calendar.MONTH) + 1;
 
         // 获取日
         int day = calendar.get(Calendar.DAY_OF_MONTH);
 
         System.out.println("一年后的今天:" + year + "年" + month + "月" + day + "日");
     }
 
     // 获取任意一个月的最后一天
     @Test
     public void test3() {
         // 假设求6月的最后一天
         int currentMonth = 6;
         // 先求出7月份的第一天,实际中这里6为外部传递进来的currentMonth变量
       // 1
        calendar.set(calendar.get(Calendar.YEAR), currentMonth, 1);
 
         calendar.add(Calendar.DATE, -1);
 
         // 获取日
         int day = calendar.get(Calendar.DAY_OF_MONTH);

         System.out.println("6月份的最后一天为" + day + "号");
     }
 
     // 设置日期
    @Test
     public void test4() {
         calendar.set(Calendar.YEAR, 2000);
         System.out.println("现在是" + calendar.get(Calendar.YEAR) + "年");
         calendar.set(2008, 8, 8);
         // 获取年
        int year = calendar.get(Calendar.YEAR);
 
        // 获取月
         int month = calendar.get(Calendar.MONTH);

        // 获取日
         int day = calendar.get(Calendar.DAY_OF_MONTH);

        System.out.println("现在是" + year + "年" + month + "月" + day + "日");
    }
 }

程序输出结果:

 现在是2016年11月7日11时42分18秒星期2
 一年后的今天:2017年11月7日
 6月份的最后一天为30号
 现在是2000年
 现在是2008年8月8日

Calendar类中也有before,after,compareTo等方法,用法与Date类的类似,只是现在推荐用Calendar类操作日期。

参考:https://www.cnblogs.com/huangminwen/p/6041168.html

原文地址:https://www.cnblogs.com/StarZhai/p/9990125.html