Calendar类位于java.util下,是一个工具类,能够帮我们轻松的实现日期的查询和转换。
实例化:
Calendar有一个静态方法getInstance可以取得Calendar的实例,通过对实例的操作可以获得我们想要的数据。
Calendar calendar = Calendar.getInstance();//获得calendar的实例(new出一个当前日历)
获取常量:
Calendar的类里面定义了一系列的静态常量,包括:
public static final int ERA = 0;//
public static final int YEAR = 1;//年份
public static final int MONTH = 2;//月份,其中0为1月份,所以得到当前月份需要+1
public static final int WEEK_OF_YEAR = 3;//今年第几周
public static final int WEEK_OF_MONTH = 4;//当月第几周
public static final int DATE = 5;//Date型
public static final int DAY_OF_MONTH = 5;//当月第几天
public static final int DAY_OF_YEAR = 6;//当年第几天
public static final int DAY_OF_WEEK = 7;//星期几,从礼拜天开始算。
通过这些常量可以获得需要的信息:
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
//打印信息为2014,其他信息的获取方法类似
方法:
set:
set(2014,03,02)设置日期为2014年4月2日(0为一月)
set(Calendar.MONTH,4) 月份修改成5月
get:
get(Calendar.YEAR)得到年份
setTime:
setTime(new Date())设置date型的时间
getTime()://得到date型的时间
add():对日期进行加减操作
例子:
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE,-1);//设置为前一天。calendar.add(Calendar.MONTH,-1)设置为前一个月
Date date = calendar.getTime();
//打印date:Thu Mar 13 21:27:57 CST 2014
long time = calendar.getTimeInMillis();
//打印time:1394717480989 单位为毫秒,可通过/(1000*60*60*24)换算为天,可用做计算两个日期相差几天。
格式化日期:
//设置格式化格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH为小写时为12小时制
String date= sf.format(new Date());
System.out.println(date);
//输出结果为:2014-03-13 21:37:34
计算两个日期相差天数:
Date方式:
public class CountTwoDateDiffer {
/**
* 计算两个日期相差的天数
* @param args
*/
public static void main(String[] args) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date startDate = sf.parse("2014-03-12");
long startTime = startDate.getTime();
Date endDate = sf.parse("2014-03-14");
long endTime = endDate.getTime();
int count = (int)(endTime - startTime)/(1000*24*60*60);
System.out.print(count);
} catch (ParseException e) {
e.printStackTrace();
}
}
}打印结果:2
Calendar方式:
public class CountTwoDateDiffer {
/**
* 计算两个日期相差的天数
* @param args
*/
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//插入日期
calendar.set(2014, 03, 12);
//得到毫秒数
long startTime = calendar.getTimeInMillis();
calendar.set(2014,03, 14);
long endTime = calendar.getTimeInMillis();
System.out.println("两个日期相差"+(endTime-startTime)/(1000*24*60*60)+"天");
}
}打印结果:两个日期相差2天
得到这个月最后一天的信息:
public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//得到一个月最后一天,Date型
int last = calendar.getActualMaximum(Calendar.DATE);
//将最后一天的日期存入calendar
calendar.set(Calendar.DATE, last);
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
Date date = calendar.getTime();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String day = sf.format(date);
//1表示星期日,2表示星期一
System.out.println("这个月最后一天是"+day+"星期"+(weekDay-1));
}
}
这个月最后一天是2014-03-31星期3
由此可以联想到,当我们Calendar calendar = Calendar.getInstance();生成一个实例的时候,会默认放入一个date型的值,calendar.setTime(new Date())。然后我们通过set()改变其中的年,月,日。
某一天是星期几:
//1.
calendar.set(2014,03,20);//03设置的是4月份。
calendar.add(Calendar.MONTH,-1);//-1为3月
int weekDay = calendar.get(Calendar.DAY_OF_WEEK)-1;//星期天为1,所以要-1
//2.默认的是求当月20号是礼拜几
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE,20);
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
//3.
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sf.parse("2014-03-20")
//首先要得到一个某一天的date类型
Calendar cl = Calendar.getInstance();
cl.setTime(date);
int dayOfweek = cl.get(Calendar.DAY_OF_WEEK)
我们都可以直接calendar.set(年,月,日);来对日期进行操作。比如说calendar.add(Calendar.DATE,-1);