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));
发表回复