您的位置:首页 > 编程语言 > Java开发

java处理日期的类

2014-02-12 17:14 253 查看
前记

Java标记为Deprecated的,表明不再建议使用,编译器会有警告,在新版本中有其他(方法或类)可以代替这个使用,以后的版本也不会再更新,可能会导致程序性能和安全性等问题

一、java.util.Date(大多数方法已经Deprecated)

//构造器
Date();
Date(long);

//
boolean after(Date);
boolean before(Date);
int compareTo(Date);
boolean equals(Object);
long getTime();
void setTime(long);


二、java.util.Calendar(这个才是重点)

Calendar是一个抽象类,子类GregorianCalendar代表公历

Calendar calendar = Calendar.getInstance();

//Calendar转换为Date
Date date = calendar.getTime();

//Date转换为Calendar
calendar.setTime(date);

ps:奇怪的是,Calendar里面只有月份的起始值是0,即1到12月是:0-11

Calendar的一部分静态类属性

int[] fields = new int[]{
Calendar.YEAR,
Calendar.MONTH,
Calendar.DATE,
Calendar.HOUR,
Calendar.HOUR_OF_DAY,
Calendar.MINUTE,
Calendar.SECOND
};
int[] months = new int[]{
Calendar.JANUARY,
Calendar.FEBRUARY,
Calendar.MARCH,
Calendar.APRIL,
Calendar.MAY,
Calendar.JUNE,
Calendar.JULY,
Calendar.AUGUST,
Calendar.SEPTEMBER,
Calendar.OCTOBER,
Calendar.NOVEMBER,
Calendar.DECEMBER
};
int[] weeks = new int[]{
Calendar.MONDAY,
Calendar.TUESDAY,
Calendar.WEDNESDAY,
Calendar.THURSDAY,
Calendar.FRIDAY,
Calendar.SATURDAY,
Calendar.SUNDAY
};


获取指定日历字段的值:int get(int field)

Calendar c = Calendar.getInstance();
for(int i = 0; i < fields.length; i ++)
System.out.print(c.get(fields[i]) + " ");//2014 1 12 2 14 37 52(年、月、日、时【12小时制】、时【24小时制】、分、秒)

设置日历:

//设置给定字段的值
void set(int field,int value);

//设置年、月、日
void set(int year,int month,int date);

//设置年、月、日、时(24小时制)、分、秒
void set(int year,int month,int date,int hourOfDay,int minute,int second);

获取指定字段的最大值和最小值:
//最大值
int getActualMaximum(int field);

//最小值
int getActualMinimum(int field);

为日历字段添加或减去指定的时间量(add与roll)
差别是:add会进位,roll不会进位,但是两者都会遵守日历规则,不会让日数变得不合理

Calendar c1 = Calendar.getInstance();
c1.set(2014, 11, 31);//2014.12.31
c1.add(Calendar.MONTH, 2);//2015.2.28

Calendar c2 = Calendar.getInstance();
c2.set(2014, 11, 31);//2014.12.31
c2.add(Calendar.MONTH, 2);//2014.2.28

Calendar具有的容错性
Calendar c = Calendar.getInstance();

//默认具有容错性,年数加1,并设置为2月
c.set(Calendar.MONTH, 13);

//主动关闭容错性,将抛出异常
c.setLenient(false);
c.set(Calendar.MONTH, 13);
PS:set()方法会延迟修改,多次调用set()不会触发不必要的计算,直到下次调用get()、getTime()、getTimeInMillis()、add()或roll()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: