Calendar
类是一个抽象类,它为特定瞬间与一组诸如 YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历之间之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类提供了操作日期的方法,如:获得某个时间是本周或本月的第几天,获得几天前,几小时前的时间,比较两个时间等等。
本文主要记载常用的如public int get(int field),public boolean after(Object when),public abstract void add(int field,int amount)方法。
在代码开始之前,先附上本文所用的时间日历,方便对比:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarDemo {
public static void main(String[] args) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
//当前时间
Date nowTime = new Date();
System.out.println("当前时间为:"+sf.format(nowTime));
//获得Calendar类对象
Calendar calendar = Calendar.getInstance();
//将calendar的时间设置为当前时间,
calendar.setTime(nowTime);
/*
* Calendar类的public int get(int field)方法
* 其中field在Calendar中都有定义,比如:
* Calendar.DAY_OF_WEEK Calendar.DAY_OF_YEAR等
*/
//获得改时间的年份,同理,也可以获得月份,日期,小时等等
System.out.println("今年是"+calendar.get(Calendar.YEAR)+"年");
//打印该时间是所在周的第几天,从周日开始算
System.out.println("今天是本周的第"+calendar.get(Calendar.DAY_OF_WEEK)+"天");
//打印该时间是所在月的第几天
System.out.println("今天是本月的第"+calendar.get(Calendar.DAY_OF_MONTH)+"天");
/*
* 日期的加减法
* field表示你要操作的节点,如:年,月,日等
*/
//获得24小时之前的时间
calendar.add(Calendar.HOUR,-24);
Date tenHoursAgo = calendar.getTime();
System.out.println("24小时前的时间是:"+sf.format(tenHoursAgo));
/*
* 日期的比较
* Calendar类的public boolean after(Object when)方法
* 该方法比较calendar中的时间是否在所比较的时间之后
*/
calendar.setTime(nowTime);
System.out.println("当前时间:"+sf.format(nowTime)+"是否在该时间:"+sf.format(tenHoursAgo)+"之后:"+calendar.after(tenHoursAgo));
}
}
打印结果如下: