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

来源:互联网 发布:国家燃烧知乎 编辑:程序博客网 时间:2024/05/01 07:51
---------------------- 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指向子类对象SimpleDateFormatDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 E");//3.使用format方法格式化指定Date对象//返回StringString 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
0 0
原创粉丝点击