黑马程序员-----Date和Calendar

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

1.Date与DateFormat
1.1 Date
Date类用来处理日期、时间。这个类从JDK1.0就开始存在了,所以大部分构造器和方法都已经过时,不推荐使用了。

构造器:
Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间以来的指定毫秒数。

1.2 DateFormat与SimpleDateFormat
DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

方法:
String format(Date date):将一个 Date 格式化为日期/时间字符串。

SimpleDateFormat是DateFormat的实现子类。SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。

构造器:
SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

下面是pattern中字母表示的各个日期和时间的对应关系:
y   ---------- 年
M  ---------- 年中的月份
d   ---------- 月份中的天数
H  ---------- 一天中的小时数(0-23)   
k   ---------- 一天中的小时数(1-24)
K  ---------- am/pm 中的小时数(0-11) 
h   ---------- am/pm 中的小时数(1-12) 
m  ---------- 小时中的分钟数
s   ---------- 分钟中的秒数
E  ---------- 星期中的天数

注:要严格区分大小写。
例:yyyy年MM月dd日 hh时mm分ss秒 E

public class DateDemo {

	public static void main(String[] args) {

		//1.创建Date对象
		Date date = new Date();
		
		//2.使用DateFormat将时间格式封装
		//父类引用DateFormat指向子类对象SimpleDateFormat
		DateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 E");
		
		//3.使用format方法格式化指定Date对象
		//返回String
		String time = format.format(date);
		
		System.out.println(time);
	}

}

2.Calendar
Calendar 类是一个抽象类,它为特诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象。
Calendar可以通过调用set方法来设置日历字段值。还可以通过add方法对时间或日期进行计算。

主要属性:
static int YEAR:年。
static int MONTH:月。注意,从0开始计数。即1月用0表示。
static int DAY_OF_MONTH:一个月中的某天。
static int DAY_OF_WEEK:一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。注意:星期数从1开始计数,并且代表星期日。
static int HOUR:小时,12小时制。
static int HOUR_OF_DAY:小时,24小时制。
static int MINUTE:分钟。
static int SECOND:秒。

方法:
static Calendar getInstance():使用默认时区和语言环境获得一个日历。返回的 Calendar 基于当前时间,使用了默认时区和默认语言环境。 
int get(int field):返回给定日历字段的值。
void set(int field, int value):将给定的日历字段设置为给定值。
void set(int year, int month, int date):设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。该方法可以对时间或日期进行计算。

public class CalendarDemo {

	public static void main(String[] args) {

		//对月份使用查表法,因为Calendar中月份从0开始
		String[] months = {"一月","二月","三月","四月",
				"五月","六月","七月","八月",
				"九月","十月","十一月","十二月"};
		
		//对星期使用查表法,因为Calendar中1代表星期日。
		//又因为0没有任何代表,所以数组角标0为空
		String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		
		//使用getInstance方法得到对象
		Calendar c = Calendar.getInstance();
		//年
		System.out.println(c.get(Calendar.YEAR) + "年");
		//月份,查表法
		int month = c.get(Calendar.MONTH);
		System.out.println(months[month]);
		//日
		System.out.println(c.get(Calendar.DAY_OF_MONTH) + "日");
		//星期,查表法
		int week = c.get(Calendar.DAY_OF_WEEK);
		System.out.println(weeks[week]);
	}

}

public class CalendarDemo2 {

	public static void main(String[] args) {

		Calendar c = Calendar.getInstance();
		
		//使用set方法设置日期
		c.set(2012, 11, 21);
		System.out.println("当前时间:");
		printCalendar(c);
		
		System.out.println();
		
		//使用add方法对日期计算
		c.add(Calendar.MONTH, 6);
		System.out.println("6个月后,时间是:");
		printCalendar(c);
		
	}
	
	
	//打印时间方法
	public static void printCalendar(Calendar c){
		String[] months = {"一月","二月","三月","四月",
				"五月","六月","七月","八月",
				"九月","十月","十一月","十二月"};

		String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
		System.out.print(c.get(Calendar.YEAR) + "年");
		//月份,查表法
		int month = c.get(Calendar.MONTH);
		System.out.print(months[month]);
		//日
		System.out.print(c.get(Calendar.DAY_OF_MONTH) + "日");
		//星期,查表法
		int week = c.get(Calendar.DAY_OF_WEEK);
		System.out.print(weeks[week]);
	}

}

练习: 获取任意年的2月有多少天。
/*
 * 获取任意年的2月有多少天
 * */
public class CalendarTest {

	public static void main(String[] args) {

		Calendar c = Calendar.getInstance();
		int yearVal = 2000;
		c.set(Calendar.YEAR, yearVal);
		int days = getDays(c);
		System.out.println(yearVal + "年2月有" + days + "天");
		
	}
	
	//该方法用于获取任意年的2月有多少天
	public static int getDays(Calendar c){
		
		//将该年份的日期设置到3月1日
		c.set(Calendar.MONTH, 2);
		c.set(Calendar.DAY_OF_MONTH, 1);
		
		//对该日期进行减一天操作,得到该年份2月最后一天
		//最后一天的数字即为2月的天数
		c.add(Calendar.DAY_OF_MONTH, -1);
		int days = c.get(Calendar.DAY_OF_MONTH);
		return days;
	}

}


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值