java处理日期的类
2014-02-12 17:14
253 查看
前记
Java标记为Deprecated的,表明不再建议使用,编译器会有警告,在新版本中有其他(方法或类)可以代替这个使用,以后的版本也不会再更新,可能会导致程序性能和安全性等问题
一、java.util.Date(大多数方法已经Deprecated)
二、java.util.Calendar(这个才是重点)
Calendar是一个抽象类,子类GregorianCalendar代表公历
ps:奇怪的是,Calendar里面只有月份的起始值是0,即1到12月是:0-11
Calendar的一部分静态类属性
获取指定日历字段的值:int get(int field)
设置日历:
//设置给定字段的值
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()
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()
相关文章推荐
- Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)
- java日期、时间以及数据库映射处理
- 【java】日期处理总结(一):Date 和 Calendar
- JAVA面试题解惑系列(七)——日期和时间的处理
- 博为峰Java技术题 ——JavaEE Servlet 处理日期Ⅲ
- 如何在Java 8中愉快地处理日期和时间
- java常用日期处理函数
- [Java 11] Date 、Calendar 、 SimpleDateFormat 与 国际化 , 日期的简单处理
- Java--jsp页面日期输出格式处理
- java日期处理类总结 转
- java日期格式处理
- Java 日期处理工具类
- 如何在java8中愉快地处理日期和时间java8新增了localdate和localtim
- JAVA 日期增加一天使用Calendar处理
- JAVA面试题解惑系列(七)――日期和时间的处理
- Java中的时间日期处理
- [jsp]java关于日期的运算等处理方法
- 【转】Java的时间处理(续<Java日期的创建和使用>)
- java基础教程:常用对象之日期处理类(24)
- Java时间日期处理小结