Java-Date类常用方法详解

这次主要整理下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

猜你喜欢

转载自blog.csdn.net/Goodbye_Youth/article/details/81584912