这次主要整理下Java中Date类的常用方法
一、Date类的定义
- Date类位于 java.util 包中,主要用来封装当前的日期和时间, Date 类提供两个构造函数来实例化 Date 对象
- Date():使用当前日期和时间来初始化对象
- Date(long milliseconds):接收一个long类型的参数,该参数是从1970-01-01 00:00:00.000到当前时间的毫秒数
Date date = new Date();
// 打印Date对象
// Sat:表示周六
// Aug:表示八月
// GMT:格林威治标准时间
// GMT+08:00:东八区即标准北京时间
System.out.println(date); // Sat Aug 11 17:03:32 GMT+08:00 2018
二、Date类的常用方法
1、getTime()
- 得到时间毫秒数
Date date = new Date();
System.out.println(date.getTime()); // 1533978518866
2、setTime(long milliseconds)
- 设置时间毫秒数
Date date = new Date();
date.setTime(100);
System.out.println(date); // Thu Jan 01 08:00:00 GMT+08:00 1970
3、equals(Object obj)
- 比较两个时间是否相等
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-10 08:08:123");
Date date2 = sdf.parse("2018-08-10 08:08:123");
System.out.println(date1.equals(date2)); // true
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-10 08:08:123");
Date date2 = sdf.parse("2018-08-11 08:08:123");
System.out.println(date1.equals(date2)); // false
4、after(Date when)
- 测试目标日期是否在参数日期之后
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-10 08:08:123");
Date date2 = sdf.parse("2018-08-09 08:08:123");
System.out.println(date1.after(date2)); // true
5、before(Date when)
- 测试目标日期是否在参数日期之前
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-10 08:08:123");
Date date2 = sdf.parse("2018-08-09 08:08:123");
System.out.println(date1.before(date2)); // false
6、compareTo(Date anotherDate)
- 对两个Date对象进行比较
- 如果目标日期等于参数日期,则返回0
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-10 08:08:123");
Date date2 = sdf.parse("2018-08-10 08:08:123");
System.out.println(date1.compareTo(date2)); // 0
- 如果目标日期在参数日期之后,则返回1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-11 08:08:123");
Date date2 = sdf.parse("2018-08-10 08:08:123");
System.out.println(date1.compareTo(date2)); // 1
- 如果目标日期在参数日期之前,则返回-1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2018-08-09 08:08:123");
Date date2 = sdf.parse("2018-08-10 08:08:123");
System.out.println(date1.compareTo(date2)); // -1
7、toInstant()
注意:Instant输出的是标准时间,即格林威治标准时间,而Date输出的是北京时间,两者相差8个小时
- 返回一个时间线上与此日期相同的一个点
Date date = new Date();
// Instant:java8的新特性,表示时间线中的一个特定时刻
Instant instant = date.toInstant();
// 标准时间,精确到纳秒
System.out.println(instant); // 2018-08-11T03:11:59.110Z
// 将标准时间修改为北京时间,即+8小时
System.out.println(instant.plusMillis(TimeUnit.HOURS.toMillis(8))); // 2018-08-11T11:11:59.110Z
// 北京时间,精确到毫秒
System.out.println(date); // Sat Aug 11 11:11:59 GMT+08:00 2018