Calendar类
概念
- java.util.Calendar 日历类,抽象类,在Date类后出现的,替换掉了很多Date类中的方法。该类将所有的可能用到的时间信息封装为静态成员变量,通过类名.静态成员变量获取时间字段值
常用的方法
- public int get(int field) 获取给定的日历字段值
- public void set(int field,int value) 将给定的字段设定为给定的值
- public abstract void add(int field,int amount) 根据日历规则,将给定的日历字段添加或者减少指定的时间值
- public Date getTime() 把日历对象转换成日期对象
- public long getTimeInMillis() 获取日历对象对应的毫秒值
Calendar类中提供了很多个成员常量,代表给定的日历字段:
字段值 | 含义 |
---|---|
YEAR | 年 |
MONTH | 月 |
DATE | 月中的某一天(几号) |
DAY_OF_DAY | 月中的第几天 |
HOUR | 时(12小时制) |
HOUR_OF_HOUR | 时(24) |
MINUTE | 分 |
SECOND | 秒 |
DAY_OF_WEEK | 一周中的第几天(周日第一天) |
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/*
Calendar类的常用的成员方法:
public int get(int field):返回的是一个给定的日历字段值
public void set(int field,int value):将给定的日历字段设置为给定的值
public abstract void add(int field,int amount):根据日历规则,为给定的日历字段添加或者是减去指定的时间量值
public Date getTime(): 返回的是一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
成员方法的参数:
int field : 日历类的字段,可以通过Calendar类的静态成员变量获取
public static final int YEAR = 1; 年
public static final int MONTH= 2; 月
public static final int DATE = 5; 月中的某一天
public static final int DAY_OF_MONTH; 月中的第几天
public static final int HOUR = 10; 时
public static final int MINUTE = 12; 分
public static final int SECOND = 13; 秒
*/
public class Demo01Calendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
demo04(calendar);
}
// 获取一个Calendar日历对象对应的Date日期对象
// 获取一个Calendar日历对象对应的Date日期对象
public static void demo04(Calendar calendar) {
// public Date getTime() 把日历对象转换成日期对象
Date date = calendar.getTime();
System.out.println(date);// Mon Nov 30 15:14:37 CST 2020
long time = date.getTime();
System.out.println("date对象对应的毫秒值:" + time);
TimeZone timeZone = calendar.getTimeZone();
System.out.println(timeZone);
long timeInMillis = calendar.getTimeInMillis();
System.out.println("calendar日历对象对应的毫秒值:"+timeInMillis);
long timeMillis = System.currentTimeMillis();
System.out.println("System类获取的毫秒值:" + timeMillis);
}
// 根据日历的规则,为给定的日历字段添加或者减去指定的时间量
public static void demo03(Calendar calendar) {
// public abstract void add(int field,int amount) 把指定的字段增加或者是减少指定的值
/*
参数:
int field:指定的日历字段(YEAR,MONTH,DATE,....)
int amount: 增加或者减少指定的数量
正数:增加指定的数量
负数:减少指定的数量
*/
// 把当前的年份增加2年
calendar.add(Calendar.YEAR, 2);
// 把当前的月份减少3个月
calendar.add(Calendar.MONTH, -3);
// 获取更改之后的年份和月份
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1;
int date = calendar.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
}
// 将给定的日历字段设置为给定的值
public static void demo02(Calendar calendar) {
// public void set(int field,int value)
/*
1 3 5 7 8 10 12 31天
4 6 9 11 30天
2 29/28天
int field:指定的日历字段(YEAR,MONTH,DATE....)
int value:给指定的日历字段设置值
*/
// 把当前的年份设置为2050年
calendar.set(Calendar.YEAR, 2050);
// 再次获取年份
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
// 把当前的月份设置为5月
calendar.set(Calendar.MONTH, 4);// 0 -- 11
//再次获取月份
int month = calendar.get(Calendar.MONTH);
System.out.println(month);
// 设置日期为5日
calendar.set(Calendar.DATE, 31);
// 再次获取日期
int date = calendar.get(Calendar.DATE);
System.out.println(date);
}
// 获取给定的日历字段值
public static void demo01(Calendar calendar) {
// 使用public int get(int field) 获取给定的日历字段值
// 获取年份
int year = calendar.get(Calendar.YEAR);
System.out.println(year);// 2020
// 获取月份
int month = calendar.get(Calendar.MONTH) + 1;
System.out.println(month);// 10 西方的日历 月份:0--11 东方 1--12
// 获取日期
int date = calendar.get(Calendar.DATE);
System.out.println(date);// 30
}
}
备注:
- 在西方的星期,开始为周日,中国为周一
- 在Calendar类中,月份的表示是以0-11代表的是1-12月
- 日期是有大小关系,时间靠后,时间越大。