java中的Date,DateFormat,Calendar
java中的Date,DateFormat,Calendar
1. Date
java.util包提供了两个构造函数来封装日期与时间。
Date();//使用当前的日期时间来构造对象
Date(long millisec);//利用从1970年1月1日起的毫秒数来构造对象
Date对象的相关方法主要侧重于时间的比较,以及毫秒数相关的方法。
方法 | 描述 |
---|---|
boolean after(Date date) | 表示调用此方法的Date对象是否在指定日期之后,若是则返回ture,否则则返回false。 |
boolean before(Date date) | 表示调用此方法的Date对象是否在指定日期之前,若是则返回ture,否则则返回false。 |
boolean equals(Object date) | 表示调用此方法的Date对象是否与指定日期相等,若是则返回ture,否则则返回false。 |
int compareTo(Date date) | 比较调用此方法的对象与指定日期,两者相等的时候返回0,调用对象在指定日期之前则返回负数,调用对象在指定日期之后则返回正数 |
方法 | 描述 |
---|---|
long getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 |
void setTime() | 用自1970年1月1日00:00:00 GMT以后time毫秒数设置此对象。 |
2. DateFormat
DateFormat是日期时间格式化子类的抽象类,主要用于格式化(日期-->文本),解析(文本-->日期)。通常使用SimpleDateFormat
1. 格式化
先要确定转换的格式,在将Date对象进行格式化
public static void main(String[] args) {
GregorianCalendar calendar = new GregorianCalendar(2021, 1, 1,13,12);
Date time = calendar.getTime();
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd:HH:mm");
String s = format.format(time);
System.out.println(s);
}
日期和时间的格式化编码,只列举常用的:
编码 | 描述 |
---|---|
yyyy | 四位年份 |
MM | 月份 |
dd | 日期 |
hh | 12小时制小时 |
HH | 24小时制小时 |
mm | 分钟数 |
ss | 秒数 |
SS | 毫秒数 |
2. 解析
SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。
SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd:HH:mm");
String t = "1980:12:02:12:00";
Date parse = format.parse(t1);
System.out.println(format.format(parse));
3. Calendar
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。可以设置和获取日期数据的特定部分。
下面将常用的构造函数和方法根据功能分类列出:
1. 设置时间
构造函数 | 说明 |
---|---|
GregorianCalendar() | 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。 |
GregorianCalendar(int year,int month,int date) | 在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar |
GregorianCalendar(int year, int month, int date, int hour, int minute) | 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
GregorianCalendar(int year, int month, int date, int hour, int minute, int second) | 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
方法 | 说明 |
---|---|
void set(int field, int value) | 用给定的值设置时间字段 |
void set(int year, int month, int date) | 设置年、月、日的值 |
void set(int year, int month, int date, int hour, int minute) | 设置年、月、日、小时、分钟的值。 |
void set(int year, int month, int date, int hour, int minute, int second) | 设置年、月、日、小时、分钟、秒的值。 |
void setTime(Date date) | 用给定的日期设置Calendar的当前时间。 |
void setTimeInMillis(long millis) | 用给定的long型毫秒数设置Calendar的当前时间。 |
注意:
field包括:
- Calendar.YEAR:年份
- Calendar.MONTH:月份,但是要注意月份是从0开始的
- Calendar.DATE:日期
- Calendar.HOUR_OF_DAY:小时
- Calendar.MINUTE:分钟
- Calendar.SECOND:秒
- Calendar.DAY_OF_WEEK:星期几,1代表星期日,2代表星期1...
- Calendar.WEEK_OF_MONTH:本月中的第几个星期,一个月中的第一个星期为1
- Calendar.WEEK_OF_YEAR:本年的第几个星期,从1开始
在设置月份以及表示月份时需要格外注意,月份的表示是从0开始的。
2. 修改时间
方法 | 说明 |
---|---|
void add(int field, int amount) | 根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。 |
3. 输出时间
方法 | 说明 |
---|---|
int getActualMaximum(int field) | 返回当前日期,给定字段的最大值 |
int getActualMinimum(int field) | 返回当前日期,给定字段的最小值 |
Date getTime() | 获取日历当前时间。 |
long getTimeInMillis() | 获取用长整型表示的日历的当前时间 |
boolean isLeapYear(int year) | 确定给定的年份是否为闰年。 |
String toString() | 返回代表日历的字符串。 |
总结
尽量使用GregorianCalendar来进行时间的设置与修改,使用SimpleDateFormat来进行时间的格式化和解析,Date对象则作为存储时间的容器来使用。