java处理日期的类

前记

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值