共计 5463 个字符,预计需要花费 14 分钟才能阅读完成。
download:Dubbo 3 深度分析 – 透过源码意识你
packagecn.outofmemory.codes.Date;
importjava.util.Calendar;
importjava.util.Date;
publicclassCalendarDemo {
publicstaticvoidmain(String[] args) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(newDate());
System.out.println("当初时刻是:"+newDate());
String year=String.valueOf(calendar.get(Calendar.YEAR));
String month=String.valueOf(calendar.get(Calendar.MONTH)+1);
String day=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
String week=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1);
System.out.println("当初时刻是:"+year+"年"+month+"月"+day+"日,星期"+week);
longyear2009=calendar.getTimeInMillis();
calendar.set(1989,9,26);// 这儿与实在的月份之间相差 1
longyear1989=calendar.getTimeInMillis();
longdays=(year2009-year1989)/(1000*60*60*24);
System.out.println("明天和 1989 年 10 月 26 日相隔"+days+"天,"+"也就是说我在这个漂亮的星球上现已美妙的生存了"+days+"天。");
}
}
Calendar 类的动态方法 getInstance() 可能初始化一个日历指标:
Calendar now = Calendar.getInstance();
可能使用上面三个方法把日历定到任何一个时刻:
set(intyear ,intmonth,intdate)
set(intyear ,intmonth,intdate,inthour,intminute)
set(intyear ,intmonth,intdate,inthour,intminute,intsecond)
如果想获得年份、月份、小时等信息可能使用:
Now.get(Calendar.Month) 这样的方法 0 表明一月,1 表明二月
get(Calendar.DAY_OF_MONTH) 获得这个月的第几天
get(Calendar.DAY_OF_WEEK) 获得这个星期的第几天
get(Calendar.DAY_OF_YEAR) 获得这个年的第几天
getTimeMillis() 获得过后时刻的毫秒表明
如下是 Calendar 类方法简介
abstractvoidadd(intfield,intamount) 依据日历的规矩,为给定的日历字段减少或减去指定的时刻量。booleanafter(Object when) 判断此 Calendar 表明的时刻是否在指定 Object 表明的时刻之后,回来判断后果。booleanbefore(Object when) 判断此 Calendar 表明的时刻是否在指定 Object 表明的时刻之前,回来判断后果。voidclear() 将此 Calendar 的所日历字段值和时刻值(从历元至当初的毫秒偏移量)设置成未界说。voidclear(intfield) 将此 Calendar 的给定日历字段值和时刻值(从历元至当初的毫秒偏移量)设置成未界说。Object clone() 创立并回来此指标的一个正本。intcompareTo(Calendar anotherCalendar) 比拟两个 Calendar 指标表明的时刻值(从历元至当初的毫秒偏移量)。protectedvoidcomplete() 填充日历字段中所有未设置的字段。protectedabstractvoidcomputeFields() 将过后毫秒时刻值 time 转换为 fields[] 中的日历字段值。protectedabstractvoidcomputeTime() 将 fields[] 中的过后日历字段值转换为毫秒时刻值 time。booleanequals(Object obj) 将此 Calendar 与指定 Object 比拟。intget(intfield) 回来给定日历字段的值。intgetActualMaximum(intfield) 给定此 Calendar 的时刻值,回来指定日历字段或者具备的最大值。intgetActualMinimum(intfield) 给定此 Calendar 的时刻值,回来指定日历字段或者具备的最小值。staticLocale[] getAvailableLocales() 回来所有语言环境的数组,此类的 getInstance 方法可能为其回来本地化的实例。String getDisplayName(intfield,intstyle, Locale locale) 回来给定 style 和 locale 下的日历 field 值的字符串表明形式。Map getDisplayNames(intfield,intstyle, Locale locale) 回来给定 style 和 locale 下蕴含日历 field 所有名称的 Map 及其相应字段值。intgetFirstDayOfWeek() 获取一星期的榜首天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。abstractintgetGreatestMinimum(intfield) 回来此 Calendar 实例给定日历字段的最高的最小值。staticCalendar getInstance() 使用默认时区和语言环境获得一个日历。staticCalendar getInstance(Locale aLocale) 使用默认时区和指定语言环境获得一个日历。staticCalendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历。staticCalendar getInstance(TimeZone zone, Locale aLocale) 使用指定时区和语言环境获得一个日历。abstractintgetLeastMaximum(intfield) 回来此 Calendar 实例给定日历字段的最低的最大值。abstractintgetMaximum(intfield) 回来此 Calendar 实例给定日历字段的最大值。intgetMinimalDaysInFirstWeek() 获取一年中榜首个星期所需的起码天数,例如,如果界说榜首个星期蕴含一年榜首个月的榜首天,则此方法将回来 1。abstractintgetMinimum(intfield) 回来此 Calendar 实例给定日历字段的最小值。Date getTime() 回来一个表明此 Calendar 时刻值(从历元至当初的毫秒偏移量)的 Date 指标。longgetTimeInMillis() 回来此 Calendar 的时刻值,以毫秒为单位。TimeZone getTimeZone() 获得时区。inthashCode() 回来该此日历的哈希码。protectedintinternalGet(intfield) 回来给定日历字段的值。booleanisLenient() 判断日期 / 时刻的讲解是否为宽松的。booleanisSet(intfield) 确定给定日历字段是否现已设置了一个值,其中包含因为调用 get 方法触发外部字段核算而导致现已设置该值的情况。abstractvoidroll(intfield,booleanup) 在给定的时刻字段上减少或减去(上 / 下)单个时刻单元,不更改更大的字段。voidroll(intfield,intamount) 向指定日历字段减少指定(有符号的)时刻量,不更改更大的字段。voidset(intfield,intvalue) 将给定的日历字段设置为给定值。voidset(intyear,intmonth,intdate) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。voidset(intyear,intmonth,intdate,inthourOfDay,intminute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。voidset(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。voidsetFirstDayOfWeek(intvalue) 设置一星期的榜首天是哪一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。voidsetLenient(booleanlenient) 指定日期 / 时刻讲解是否是宽松的。voidsetMinimalDaysInFirstWeek(intvalue) 设置一年中榜首个星期所需的起码天数,例如,如果界说榜首个星期蕴含一年榜首个月的榜首天,则使用值 1 调用此方法。voidsetTime(Date date) 使用给定的 Date 设置此 Calendar 的时刻。voidsetTimeInMillis(longmillis) 用给定的 long 值设置此 Calendar 的过后时刻值。voidsetTimeZone(TimeZone value) 使用给定的时区值来设置时区。String toString() 回来此日历的字符串表明形式
Calendar 的罕用方法示例
1、核算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);// 留神,Calendar 指标默认一月为 0
intday=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=newDate();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
3、格式化输入日期时刻
Date date=newDate();
SimpleDateFormat df=newSimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
System.out.println(df.format(date));
4、核算一年中的第几星期
(1) 核算某一天是一年中的第几星期
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
intweekno=cal.get(Calendar.WEEK_OF_YEAR);
(2) 核算一年中的第几星期是几号
SimpleDateFormat df=newSimpleDateFormat(“yyyy-MM-dd”);
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,2006);
cal.set(Calendar.WEEK_OF_YEAR,1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));
输入:
2006-01-02
5、add() 和 roll() 的用法
(1) add() 方法
SimpleDateFormat df=newSimpleDateFormat(“yyyy-MM-dd”);
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR,2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
cal.add(Calendar.DATE, -4);
Date date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE,4);
date=cal.getTime();
System.out.println(df.format(date));