public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>
Calendar
类是一个抽象类,它为特定瞬间与一组诸如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。通过实例学习Calendar的使用:
package newTest;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestCalendar {
public static void main(String[] args) {
/**
* Calender类的使用,内含Calendar与Date的转化
*/
Calendar calendar = new GregorianCalendar();
Date now = new Date();
System.out.println("当前时间"+now);
//2.使用给定的Date类型的时间设置Calendar的时间
calendar.setTime(now);
/** Calendar的静态变量 **/
System.out.println("年YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("月MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("一年的某周WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("一月的某周WEEK_OF_MONTH: "+ calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("一月的某天DATE: " + calendar.get(Calendar.DATE));
System.out.println("一月的某天DAY_OF_MONTH: "+ calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("一年的某天DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("一周的某天DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("当月的第几个星期DAY_OF_WEEK_IN_MONTH: "+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("上午或下午HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("24小时制小时HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分钟MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("秒钟SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("毫秒MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
/** Calendar的getInstance()方法:获得当前日历的实例 **/
Calendar calendar1 = Calendar.getInstance();//获得当前日历的实例
Date date = calendar1.getTime();
System.out.println(date);
//3.使用给定的 Date设置此 Calendar 的时间
calendar1.setTime(date);
//Date的getTime方法:返回自 1970 年 1 月 1 日 00:00:00 GMT以来此 Date对象表示的毫秒数
System.out.println("getTime:"+date.getTime());
//可以使用setTime获得几天前的时间,但如果要减去的天数过多会出现误差(参照BigInteger)
date.setTime(date.getTime()-20*24*60*60*1000);
System.out.println("使用setTime得到的时间:"+date);
/** 应用: 使用Calendar的add方法改变当前日期 **/
calendar1.add(Calendar.DAY_OF_MONTH, -5);//当前日期5天前的时间
calendar1.add(Calendar.HOUR, -25);
calendar1.add(Calendar.DATE, -5);//当前日期5天前的时间
calendar1.add(Calendar.YEAR, -1);//当前日期1年前的时间
calendar1.add(Calendar.YEAR, 2);//当前日期1年前的时间
System.out.println(calendar1.getTime());
}
}
执行结果如下:
当前时间Fri Jan 25 16:59:14 CST 2013
年YEAR: 2013
月MONTH: 0
一年的某周WEEK_OF_YEAR: 4
一月的某周WEEK_OF_MONTH: 4
一月的某天DATE: 25
一月的某天DAY_OF_MONTH: 25
一年的某天DAY_OF_YEAR: 25
一周的某天DAY_OF_WEEK: 6
当月的第几个星期DAY_OF_WEEK_IN_MONTH: 4
上午或下午HOUR: 4
24小时制小时HOUR_OF_DAY: 16
分钟MINUTE: 59
秒钟SECOND: 14
毫秒MILLISECOND: 844
Fri Jan 25 16:59:14 CST 2013
getTime:1359104354849
使用setTime得到的时间:Sat Jan 05 16:59:14 CST 2013
Tue Jan 14 15:59:14 CST 2014
使用java.util.Calender循环输出(使用)日期
//使用Calendar循环输出日期
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
String dateStr1 = "2013-3-16";
String dateStr2 = "2013-3-24";
Date dateBegin = formater.parse(dateStr1);
Date dateEnd = formater.parse(dateStr2);
Calendar ca = Calendar.getInstance();
while(dateBegin.compareTo(dateEnd) <= 0){
System.out.println(formater.format(dateBegin));
ca.setTime(dateBegin);
ca.add(ca.DATE,1);//把dateBegin加上1天然后重新赋值给date1
dateBegin = ca.getTime();//Calendar的getTime()方法获得Date对象
}