package test.Date;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等
* 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些
* 方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的
* 00:00:00.000,格里高利历)的偏移量。
*
* Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算
*
* Calendar类是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar
* (格里高里历,即通用的阳历),对应世界绝大多数国家地区使用的标准日历系统。
*
* 常用方法:
* 1. getInstance方法(重载4)
* 返回一个Calendar对象,其日历字段已由当前日期和时间初始化
* Calendar c = Calendar.getInstance();
*
* 2. set方法(重载4)
* 设置时间及日期分量
*
* 3. get方法
* 获取时间及日期分量
*
* 4. getActualMaximum方法
* int getActualMaximum (int field)
* 给定此Calendar的时间值,返回指定日历字段可能拥有的最大值
*
* 5. add方法
* void add (int field,int mount)
* 为给定的时间分量的值加上给定的值,若给定的值为负数,则是减去该值
*
* 6. setTime方法
* void setTime(Date d)
* 使Calendar表示Date所描述的日期
*
* 7. getTime方法
* Date getTime()
* 使用Date描述Calendar表示的日期并返回
*
* @author unique_19
*
*/
public class TestCalendar {
public static void main(String[] args) {
testGetInstance();
System.out.println("**********************************************************");
testSet();
System.out.println("**********************************************************");
testGet();
System.out.println("**********************************************************");
testGetActualMaximum();
System.out.println("**********************************************************");
testAdd();
System.out.println("**********************************************************");
testSetTimeAndGetTime();
}
/**使用Calendar及其子类获取时间**/
public static void testGetInstance(){
Calendar c = Calendar.getInstance();
//输出Calendar对象所属的实际类型
System.out.println(c);
System.out.println(c.getClass().getName());//getClass(),Object类的方法,返回c运行的时类
//getTime方法返回对应的Date对象
System.out.println(c.getTime());
//创建GregorianCalendar对象
GregorianCalendar c1 = new GregorianCalendar(2013, Calendar.DECEMBER/**类名掉用该类的静态属性**/, 25);
System.out.println(c1);
System.out.println(c1.getTime());
}
/**设置日期及时间分量**/
public static void testSet(){
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2014);
c.set(Calendar.MONTH, Calendar.DECEMBER);
c.set(Calendar.DATE, 25);
System.out.println(c.getTime());
c.set(Calendar.DATE, 32); //超过该月最大天数的天数会自动算到下个月
System.out.println(c.getTime());
}
/**获取日期及时间分量**/
public static void testGet(){
Calendar c = Calendar.getInstance();
c.set(2016, Calendar.JUNE, 23, 16, 23, 0); //星期四
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
}
/**给定此Calendar的时间值,返回指定日历字段可能拥有的最大值**/
public static void testGetActualMaximum(){
int year = 2016;
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.DATE, 1);
for(int month=Calendar.JANUARY;month<=Calendar.DECEMBER;month++){
c.set(Calendar.MONTH, month);
System.out.println(year+"年"+(month+1)+"月:"+c.getActualMaximum(Calendar.DATE)+"天");
}
}
/**为给定的时间分量的值加上给定的值,若给定的值为负数,则是减去该值**/
/**输出一年后再减去3个月的日期**/
public static void testAdd(){
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR,1);
c.add(Calendar.MONTH, -3);
System.out.println("year:"+c.get(Calendar.YEAR));
System.out.println("month:"+(c.get(Calendar.MONTH)+1));
System.out.println("day:"+c.get(Calendar.DAY_OF_MONTH));
}
/**通过Date对象设置日期,再获取日期**/
public static void testSetTimeAndGetTime(){
Calendar c = Calendar.getInstance();
Date date = new Date();
c.setTime(date);
//使Calendar表示Date所描述的日期
System.out.println(c);
date = c.getTime();
//使用Date描述Calendar表示的日期并返回
System.out.println(date);
}
}
java自学之旅(2.3)关于Calendar类常用方法
最新推荐文章于 2022-03-08 20:49:32 发布