package pack.java.calendar.demo \x0d\x0a \x0d\x0aimport java.text.SimpleDateFormat \x0d\x0aimport java.util.Calendar \x0d\x0aimport java.util.Date \x0d\x0aimport java.util.GregorianCalendar \x0d\x0a \x0d\x0apublic class CalendarDemo { \x0d\x0aprivate static SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss") \x0d\x0apublic static void main(String[] args) { \x0d\x0a \x0d\x0a//获取calendar实例 \x0d\x0aCalendar calendar = Calendar.getInstance() \x0d\x0a \x0d\x0a//判断calendar是不是GregorianCalendar类的实例 \x0d\x0aif(calendar instanceof GregorianCalendar){ \x0d\x0aSystem.out.println("属于GregorianCalendar类的实例!") \x0d\x0a} \x0d\x0a \x0d\x0a//从calendar对象中获得date对象,当前
时间 \x0d\x0aDate dates = calendar.getTime() \x0d\x0a \x0d\x0a//格式化时间 \x0d\x0aString date_str= date_format.format(dates) \x0d\x0aSystem.out.println(date_str) \x0d\x0a \x0d\x0a//设置月份05;代表日历的月份6月,因为月份从0开始。 \x0d\x0acalendar.set(Calendar.MONTH, 05) \x0d\x0a \x0d\x0aint months = calendar.get(Calendar.MONTH) \x0d\x0aSystem.out.println(months) //输出05 \x0d\x0a \x0d\x0a//设置日期为2011-07-24 09:59:50 \x0d\x0acalendar.set(2011, 06, 24, 9, 59, 50)\x0d\x0aString getDate = date_format.format(calendar.getTime()) \x0d\x0aSystem.out.println(getDate) //输出2011-07-24 09:59:50 \x0d\x0a \x0d\x0a//比较日前大小 \x0d\x0aif(new Date().getTime() >calendar.getTimeInMillis()){ \x0d\x0aSystem.out.println("当前日期在后!") \x0d\x0a}else{ \x0d\x0aSystem.out.println("当前日期在前!") \x0d\x0a} \x0d\x0a \x0d\x0a//设置当前时间为:2011-07-24 11:06:00 \x0d\x0acalendar.setTime(new Date())\x0d\x0aint year = calendar.get(Calendar.YEAR) //获取年 \x0d\x0aint month = calendar.get(Calendar.MONTH) //获取月 \x0d\x0aint date = calendar.get(Calendar.DATE) //获取天 \x0d\x0aint hour = calendar.get(Calendar.HOUR) //获取小时 \x0d\x0aint minute = calendar.get(Calendar.MINUTE)//获取分钟 \x0d\x0aint second = calendar.get(Calendar.SECOND)//获取秒钟 \x0d\x0aint hour_of_day = calendar.get(Calendar.HOUR_OF_DAY) //第几个小时, \x0d\x0aint day_of_month = calendar.get(Calendar.DAY_OF_MONTH)//这天,在一个月内是第
几天.\x0d\x0aint day_of_week = calendar.get(Calendar.DAY_OF_WEEK) //这天,在一周内,是第几天. \x0d\x0aint day_of_year = calendar.get(Calendar.DAY_OF_YEAR) //这天,在一年内,是第几天。 \x0d\x0aint week_of_year = calendar.get(Calendar.WEEK_OF_YEAR) //这周,在一年内是第几周 \x0d\x0aint week_of_month = calendar.get(Calendar.WEEK_OF_MONTH)//这周,在这个月是第几周以以星为标准; \x0d\x0aint zone_offset = calendar.get(Calendar.ZONE_OFFSET) //获取时区 \x0d\x0aint day_of_week_in_month = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) //某月中第几周,按这个月1号算,1号起就是第1周,8号起就是第2周。以月份
天数为标准\x0d\x0aint r = calendar.get(Calendar.AM_PM) \x0d\x0aif(r==calendar.AM){ \x0d\x0aSystem.out.println("现在是上午") \x0d\x0a} \x0d\x0a \x0d\x0aif(r==calendar.PM){ \x0d\x0aSystem.out.println("现在是下午") \x0d\x0a} \x0d\x0aSystem.out.println("==================================================") \x0d\x0aSystem.out.println(year) \x0d\x0aSystem.out.println(month) \x0d\x0aSystem.out.println(date) \x0d\x0aSystem.out.println(hour) \x0d\x0aSystem.out.println(minute) \x0d\x0aSystem.out.println(second) \x0d\x0aSystem.out.println(hour_of_day) \x0d\x0aSystem.out.println(day_of_month) \x0d\x0aSystem.out.println(day_of_week) \x0d\x0aSystem.out.println(day_of_year) \x0d\x0aSystem.out.println(week_of_year) \x0d\x0aSystem.out.println(week_of_month) \x0d\x0aSystem.out.println(zone_offset) \x0d\x0aSystem.out.println(day_of_week_in_month) \x0d\x0a} \x0d\x0a}
Java中日历类(Calendar类)的用途如下:
Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now = Calendar.getInstance()
可以使用下面三个方法把日历定到任何一个时间:
set(int year ,int month,int date)
set(int year ,int month,int date,int hour,int minute)
set(int year ,int month,int date,int hour,int minute,int second)
如果想获得年份、月份、小时等信息可以使用:
Now.get(Calendar.Month)//这样的方法 0表示一月,1表示二月
get(Calendar.DAY_OF_MONTH)//获得这个月的第几天
get(Calendar.DAY_OF_WEEK)//获得这个星期的第几天
get(Calendar.DAY_OF_YEAR)//获得这个年的第几天
getTimeMillis()//获得当前时间的毫秒表示
1.计算某一月份的最大天数
Calendar time=Calendar.getInstance()
time.clear()
time.set(Calendar.YEAR,year)
time.set(Calendar.MONTH,i-1)//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH)//本月份的天数
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date
Calendar cal=Calendar.getInstance()
Date date=cal.getTime()
(2) Date转化为Calendar
Date date=new Date()
Calendar cal=Calendar.getInstance()
cal.setTime(date)
3.格式化输出日期时间
Date date=new Date()
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
System.out.println(df.format(date))
4.计算相隔天数的方法
public int getDaysBetween (Calendar d1, Calendar d2){
if (d1.after(d2)){ // swap dates so that d1 is start and d2 is end
java.util.Calendar swap = d1
d1 = d2
d2 = swap
}
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR)
int y2 = d2.get(Calendar.YEAR)
if (d1.get(Calendar.YEAR) != y2){
d1 = (Calendar) d1.clone()
do{
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR)//得到当年的实际天数
d1.add(Calendar.YEAR, 1)
} while (d1.get(Calendar.YEAR) != y2)
}
return days
}