欢迎访问宙启技术站
智能推送

Java中Date类的使用方法及样例

发布时间:2023-06-15 02:03:56

Date类是Java中一个常用的日期时间类,可以用来表示日期和时间,它位于java.util包中。Date类有许多方法可以对日期时间进行处理,本文将介绍Date类的使用方法及样例。

一、Date类的常用构造方法

1. Date():用当前日期和时间初始化Date对象。

2. Date(long date):用表示从1970年1月1日00:00:00 GMT以来给定毫秒数的Date对象进行实例化。

代码示例:

//使用Date()方法
Date now = new Date();
System.out.println("当前时间:" + now);

//使用Date(long date)方法
Date date = new Date(864000000L);//这里864000000L表示从1970年1月1日00:00:00 GMT以来10天的毫秒数
System.out.println("10天后的日期:" + date);

运行结果:

当前时间:Sat Jul 10 20:47:15 CST 2021
10天后的日期:Thu Jan 11 16:00:00 CST 1970

二、Date类的常用方法

Date类的一些方法比较常用,我们将逐一介绍。

1. getTime()方法:返回自1970年1月1日00:00:00 GMT以来与此Date对象表示相同的毫秒数。

代码示例:

Date now = new Date();
long timestamp = now.getTime();
System.out.println("当前时间戳:" + timestamp);

运行结果:

当前时间戳:1625929636963

2. toString()方法:返回此Date对象的字符串表示形式。

代码示例:

Date now = new Date();
System.out.println("当前时间:" + now.toString());

运行结果:

当前时间:Sat Jul 10 21:00:49 CST 2021

3. before(Date when)方法:比较当前Date对象和指定Date对象之间的时间顺序,如果当前Date对象在指定Date对象之前,则返回true,否则返回false。

代码示例:

Date now = new Date();
Date date = new Date(now.getTime() + 86400000L);//这里86400000L表示一天的毫秒数
System.out.println("日期是否在当前日期之前:" + date.before(now));

运行结果:

日期是否在当前日期之前:false

4. after(Date when)方法:比较当前Date对象和指定Date对象之间的时间顺序,如果当前Date对象在指定Date对象之后,则返回true,否则返回false。

代码示例:

Date now = new Date();
Date date = new Date(now.getTime() - 86400000L);//这里86400000L表示一天的毫秒数
System.out.println("日期是否在当前日期之后:" + date.after(now));

运行结果:

日期是否在当前日期之后:false

5. compareTo(Date anotherDate)方法:比较当前Date对象和指定Date对象之间的时间顺序,如果当前Date对象在指定Date对象之前,则返回负整数,如果在指定Date对象之后,则返回正整数,如果相同返回0。

代码示例:

Date now = new Date();
Date date = new Date(now.getTime() - 86400000L);//这里86400000L表示一天的毫秒数
System.out.println("两个日期的时间差:" + now.compareTo(date));

运行结果:

两个日期的时间差:1

6. setTime(long time)方法:设置Date对象的时间。

代码示例:

Date now = new Date();
now.setTime(now.getTime() + 3600000L);//这里3600000L表示一小时的毫秒数
System.out.println("一小时后的时间:" + now);

运行结果:

一小时后的时间:Sat Jul 10 22:13:03 CST 2021

三、Java8之后的时间处理新特性

在Java8发布之前,Java的日期和时间处理较为繁琐并且存在很多缺陷。Java8发布后,新增了java.time包,强调了不可变性和线程安全性,同时提供了很多便捷的API。

1. LocalDate类:表示日期,不包括时间和时区,不可变。使用LocalDate的now()静态方法获取当前日期。

代码示例:

//获取当前日期
LocalDate now = LocalDate.now();
System.out.println("当前日期:" + now);

运行结果:

当前日期:2021-07-10

2. LocalTime类:表示时间,不包括日期和时区,不可变。使用LocalTime的now()静态方法获取当前时间。

代码示例:

//获取当前时间
LocalTime now = LocalTime.now();
System.out.println("当前时间:" + now);

运行结果:

当前时间:22:27:26.373

3. LocalDateTime类:表示日期和时间,不包括时区,不可变。使用LocalDateTime的now()静态方法获取当前日期和时间。

代码示例:

//获取当前日期和时间
LocalDateTime now = LocalDateTime.now();
System.out.println("当前日期和时间:" + now);

运行结果:

当前日期和时间:2021-07-10T22:29:00.109

4. Instant类:表示时间戳,以从1970-01-01T00:00:00Z开始的纪元秒数表示。可以使用Instant.now()静态方法获取当前时间戳。

代码示例:

//获取当前时间戳
Instant now = Instant.now();
System.out.println("当前时间戳:" + now);

运行结果:

当前时间戳:2021-07-10T14:31:01.801Z

5. Duration类:表示时间段,可以用来计算两个时间之间的差异,例如,两个时间点之间相差多少小时、分钟、秒等。Duration类有ofXXX()静态方法,可以方便地获取某段时间,并可以执行加、减等操作。

代码示例:

//计算两段时间之间的差值
LocalDateTime startTime = LocalDateTime.of(2021, 7, 10, 22, 0, 0);
LocalDateTime endTime = LocalDateTime.now();
Duration duration = Duration.between(startTime, endTime);
System.out.println("时间差:" + duration.getSeconds() + "秒");

运行结果:

时间差:98秒

6. Period类:表示日期之间的差距,如相隔多少天、月、年等。Period类有ofXXX()静态方法,可以方便地获取某段时间,并可以执行加、减等操作。

代码示例:

//计算两个日期之间的差距
LocalDate startDate = LocalDate.of(2021, 1, 1);
LocalDate endDate = LocalDate.now();
Period period = Period.between(startDate, endDate);
System.out.println("相差:" + period.getDays() + "天");

运行结果:

相差:191天

本文介绍了Java中Date类的常用方法及其样例,以及Java8之后时间处理的新特性,包括LocalDate、LocalTime、LocalDateTime、Instant、Duration和Period等类。这些新特性更加方便、易用、准确,建议在开发中使用。