Java常用类之日期操作类
在Java中对日期的操作类常用的有以下4种:
-
Date类
-
Calendar类
-
DateFormat类
-
SimpleDateFormat类
一起来了解一下各个类如何使用的吧!!!
一、Date类
1、Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已被Calendar类中的方法所取代。2、时间单位:
1秒=1000毫秒
1毫秒=1000微秒
1微秒=1000纳秒
3、在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:
-
年份 y 由整数 y - 1900 表示。
-
月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
-
日期(一月中的某天)按通常方式由整数 1 至 31 表示。
-
小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
-
分钟按通常方式由 0 至 59 的整数表示。
-
秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定
常用方法
方法 | 描述 |
---|---|
boolean after(Date when) | 测试此日期是否在指定日期之后。 |
boolean before(Date when) | 测试日期是否在指定日期之前 |
int compareTo(Date anotherDate) | 比较两个日期的顺序。如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。 |
public long getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 |
实例
package lesson2;
import java.util.Date;
public class Demo06 {
public static void main(String[] args) {
Date date1 = new Date();
//打印出今天的时间
System.out.println("=====打印出今天的时间======");
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());
System.out.println("=====打印出昨天的时间======");
Date date2 = new Date(date1.getTime() - (60 * 60 * 24 * 1000));
System.out.println(date2);
//方法 after和before
boolean b1 = date1.after(date2);
System.out.println(b1);
boolean b2 = date1.before(date2);
System.out.println(b2);
//比较 compareTo()
int d = date2.compareTo(date1);
System.out.println(d);
//比较 equals()
boolean b3 = date1.equals(date2);
System.out.println(b3);
}
}
1、Calendar提供了获取或设置各种日历字段的方法。
2、这个类本身是一个抽象类,可以依靠对象的多态性,通过子类进行父类的实例化操作。
3、由于修饰符为protected,所以也无法创建对象。但Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
常用方法
方法 | 描述 |
---|---|
static Calendar getInstance() | 使用默认时区和区域获取日历 |
public final void set(int year,int month, int date, int hourOfDay,int minute,int second) | 设置年、月、日、时、分、秒。 |
public int get(int field) | 返回指定字段的值。字段如年、月、日等 |
void setTime(Date date) | 使用给定的 Date 设置此 Calendar 的时间。 |
Date getTime() | 返回一个表示此 Calendar 时间值的 Date 对象。 |
void add(int field,int amount) | 按照日历的规则,给指定字段添加或减少时间 |
long getTimeMillies() | 以毫秒为单位返回该日历的时间值 |
Calendar类中的常量
常量 | 描述 |
---|---|
public static final int YEAR | 取得年 |
public static final int MONTH | 取得月 |
public static final int DAY_OF_MONTH | 取得日 |
public static final int HOUR_OF_DAY | 取得小时,24小时制 |
public static final int MINUTE | 取得分 |
public static final int SECOND | 取得秒 |
public static final int MILLISECOND | 取得毫秒 |
实例
package lesson2;
import java.util.Calendar;
public class Demo07 {
public static void main(String[] args) {
//1、创建Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
//打印毫秒值
System.out.println(calendar.getTimeInMillis());
//2、获取时间信息
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月 0-11
int month = calendar.get(Calendar.MONTH);
//获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);//Date
//小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//分钟
int minute = calendar.get(Calendar.MINUTE);
//秒
int second = calendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);
//3、修改时间
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,5);
System.out.println(calendar2.getTime().toLocaleString());
//4、add方法修改时间
calendar2.add(Calendar.HOUR,1);
//calendar2.add(Calendar.HOUR,-1);//减少一小时
System.out.println(calendar2.getTime().toLocaleString());
//5、补充方法
calendar2.add(Calendar.MONTH,5);
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
System.out.println(max);
System.out.println(min);
}
}
如果要得到用户自己需要的日期显示格式,则必须通过DateFormat的子类SimpleDateFormat类。
方法 | 描述 |
---|---|
public Date parse(String source)throws ParseException | 将一个包含日期的字符串变为Date类型 |
public final String format(Date date) | 将一个Date类型按照指定格式变为String类型 |
实例
package lesson2;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo08 {
public static void main(String[] args) throws Exception{
//1、创建SimpleDateFormat对象 y:年 M:月
// 或者SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//2、创建Date
Date date = new Date();
//格式化date(把日期转为字符串)
String str=sdf.format(date);
System.out.println(str);
//解析(把字符串转为时间)
Date date2 = sdf.parse("1990/05/01");//此处有异常,需要抛出
System.out.println(date2);
}
}