在令人头痛的日期处理中,我们是否发现了那强大的Calendar,学习到这个类,感觉强大无比,特记录下
package com.iceStudy.util;
import java.util.Calendar;
import java.util.Date;
import static java.util.Calendar.*;
public class CalendarStudy {
Calendar cal=Calendar.getInstance();
public static void main(String[] args) {
CalendarStudy cals=new CalendarStudy();
cals.show();
}
/**
* static int ALL_STYLES 指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。
static int AM 指示从午夜到中午之前这段时间的 AM_PM 字段值。
static int AM_PM get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。
static int APRIL 指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。
protected boolean areFieldsSet 如果 fields[] 与当前的设置时间同步,则返回 true。
static int AUGUST 指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。
static int DATE get 和 set 的字段数字,指示一个月中的某天。
static int DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。
static int DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。
static int DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。
static int DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。
static int DECEMBER 指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。
static int DST_OFFSET get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。
static int ERA 指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。
static int FEBRUARY 指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。
static int FIELD_COUNT get 和 set 可识别的不同字段的数量。
protected int[] fields 此日历当前设置时间的日历字段值。
static int FRIDAY 指示 Friday 的 DAY_OF_WEEK 字段值。
static int HOUR get 和 set 的字段数字,指示上午或下午的小时。
static int HOUR_OF_DAY get 和 set 的字段数字,指示一天中的小时。
protected boolean[] isSet 通知是否设置了该日历某一指定日历字段的标志。
protected boolean isTimeSet 如果 time 值是一个有效值,则返回 true。
static int JANUARY 指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。
static int JULY 指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。
static int JUNE 指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。
static int LONG 指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。
static int MARCH 指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。
static int MAY 指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。
static int MILLISECOND get 和 set 的字段数字,指示一秒中的毫秒。
static int MINUTE get 和 set 的字段数字,指示一小时中的分钟。
static int MONDAY 指示 Monday 的 DAY_OF_WEEK 字段值。
static int MONTH 指示月份的 get 和 set 的字段数字。
static int NOVEMBER 指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。
static int OCTOBER 指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。
static int PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。
static int SATURDAY 指示 Saturday 的 DAY_OF_WEEK 字段值。
static int SECOND get 和 set 的字段数字,指示一分钟中的秒。
static int SEPTEMBER 指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。
static int SHORT 指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "Jan"。
static int SUNDAY 指示 Sunday 的 DAY_OF_WEEK 字段值。
static int THURSDAY 指示 Thursday 的 DAY_OF_WEEK 字段值。
protected long time 日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。
static int TUESDAY 指示 Tuesday 的 DAY_OF_WEEK 字段值。
static int UNDECIMBER 指示一年中第十三个月的 MONTH 字段值。
static int WEDNESDAY 指示 Wednesday 的 DAY_OF_WEEK 字段值。
static int WEEK_OF_MONTH get 和 set 的字段数字,指示当前月中的星期数。
static int WEEK_OF_YEAR get 和 set 的字段数字,指示当前年中的星期数。
static int YEAR 指示年的 get 和 set 的字段数字。
static int ZONE_OFFSET get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。
*/
public void show(){
//cal.setTime(new Date());//设置时间为今天
System.out.println("年"+cal.get(YEAR));//使用了静态导入,所以省略了Calendar名字,全称应为Calendar.YEAR
System.out.println("月"+cal.get(MONTH));
System.out.println("日"+cal.get(DAY_OF_MONTH));
System.out.println("时"+cal.get(HOUR_OF_DAY));
System.out.println("分"+cal.get(MINUTE));
System.out.println("秒"+cal.get(SECOND));
cal.setTime(new Date());//与传统的date互换,很方便
Date date=cal.getTime();
//cal.set(year, month, date, hourOfDay, minute)//可以自由设置指定时间
cal.add(DAY_OF_MONTH, 1);//灵活而好用的一个方法,可以自由的选择加减那个字段,可以构造出很多实用的应用。
System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
cal.set(DAY_OF_WEEK, MONDAY);//同样令活儿好用的方法,可以实现很多功能,例如得到本周一日期,由此发散开,几乎应用太广了
System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
//复杂一些,得到今年二月的第二个星期周5的日期
cal.set(MONTH, 2);
cal.set(WEEK_OF_MONTH, 2);
cal.set(DAY_OF_WEEK_IN_MONTH, FRIDAY);
System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
//获取下月第一天日期 ps:我看je上有人自己写的方法,我觉得能比较好的体现出add和set的巧妙
Calendar lastDate = Calendar.getInstance();
lastDate.add(MONTH,1);//加一个月
lastDate.set(DAY_OF_MONTH, 1);//把日期设置为当月第一天
System.out.println("改变后的"+lastDate.get(DAY_OF_MONTH));
// 计算当月最后一天,返回字符串
lastDate = Calendar.getInstance();
lastDate.set(DAY_OF_MONTH,1);//设为当前月的1号
lastDate.add(MONTH,1);//加一个月,变为下月的1号
lastDate.add(DAY_OF_MONTH,-1);//减去一天,变为当月最后一天
System.out.println("改变后的"+lastDate.get(DAY_OF_MONTH));
//总结强大的add,set,注意他们可以正负操作,如果是关于从今天开始的某个特殊时间则add是不错的选择,如果是固定时间的选择set则很好的帮助我们,
//更多的时候,则是add和set共同作用,配合那些强大的字段,Calendar必将解放我们的痛苦思维。
}
}
附件是java 文件,更多的用法,更灵活的使用,就要靠大家对那些字段的认知了