作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长! 主打方向:Vue、SpringBoot、微信小程序
本文讲解了 Java 中常用类 Date 的语法、使用说明和应用场景,并给出了样例代码。
在 Java 中,Date 类是用于表示日期和时间的类,它位于java.util包中,是Java提供的日期和时间处理的基本类之一,Date类提供了各种方法来获取、设置和操作日期和时间。
Date类的主要功能包括以下
点,请同学们认真学习。
年、月、日、小时、分钟 和 秒 等时间组成部分。get 方法获取日期和时间的 年、月、日、小时、分钟 和 秒 等组成部分。before()、after() 和 equals() 等。SimpleDateFormat 类将 Date 对象格式化为指定的字符串表示形式。需要注意的是,Date 类中的很多方法已经过时,推荐使用
java.time包中的新日期时间 API 来代替。Java 8之后引入的新日期时间 API 提供了更强大、更灵活的日期和时间处理功能。
以下是一个简单的示例,展示了如何使用Date类获取和设置日期和时间:
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date now = new Date(); // 创建表示当前时间的Date对象
System.out.println("当前时间:" + now);
now.setHours(12); // 设置小时为12
System.out.println("修改后的时间:" + now);
int year = now.getYear() + 1900; // 获取年份需要加上1900
int month = now.getMonth() + 1; // 获取月份需要加上1
int day = now.getDate(); // 获取日期
int hour = now.getHours(); // 获取小时
int minute = now.getMinutes(); // 获取分钟
int second = now.getSeconds(); // 获取秒钟
System.out.println("年份:" + year);
System.out.println("月份:" + month);
System.out.println("日期:" + day);
System.out.println("小时:" + hour);
System.out.println("分钟:" + minute);
System.out.println("秒钟:" + second);
}
}注意:在 Java 8及以后的版本中,推荐使用 ·java.time· 包中的新日期时间 API 来处理日期和时间。

在 JDK8 中,Date 类的方法主要是用来处理日期和时间的,以下是一些常用的方法:
toInstant():将Date对象转换为Instant对象。toLocalDate():将Date对象转换为LocalDate对象。toLocalDateTime():将Date对象转换为LocalDateTime对象。toLocalTime():将Date对象转换为LocalTime对象。getTime():获取Date对象表示的时间的毫秒数。setTime(long time):设置Date对象表示的时间为指定的毫秒数。before(Date when):判断当前Date对象的时间是否在指定Date对象之前。after(Date when):判断当前Date对象的时间是否在指定Date对象之后。equals(Object obj):判断当前Date对象与另一个对象是否相等。compareTo(Date anotherDate):按照时间顺序比较当前Date对象和另一个Date对象。toString():将Date对象转换为字符串表示。from(Instant instant):将Instant对象转换为Date对象。以下是一个示例代码,展示了如何使用 JDK8 的 Date类 的方法:
import java.util.Date;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
Date date = new Date();
Instant instant = date.toInstant();
System.out.println("Date to Instant: " + instant);
LocalDate localDate = date.toLocalDate();
System.out.println("Date to LocalDate: " + localDate);
LocalDateTime localDateTime = date.toLocalDateTime();
System.out.println("Date to LocalDateTime: " + localDateTime);
LocalTime localTime = date.toLocalTime();
System.out.println("Date to LocalTime: " + localTime);
long timeInMillis = date.getTime();
System.out.println("Time in milliseconds: " + timeInMillis);
date.setTime(1614739200000L);
System.out.println("Set time: " + date);
Date anotherDate = new Date(1614739200000L);
boolean isBefore = date.before(anotherDate);
System.out.println("Is date before anotherDate? " + isBefore);
boolean isAfter = date.after(anotherDate);
System.out.println("Is date after anotherDate? " + isAfter);
boolean isEqual = date.equals(anotherDate);
System.out.println("Is date equal to anotherDate? " + isEqual);
int comparison = date.compareTo(anotherDate);
System.out.println("Comparison result: " + comparison);
String dateString = date.toString();
System.out.println("Date to String: " + dateString);
Date convertedDate = Date.from(instant);
System.out.println("Instant to Date: " + convertedDate);
}
}注意:在 JDK8 中,推荐使用
java.time包中的新日期时间 API(如LocalDate、LocalDateTime、Instant等)来处理日期和时间,因为新 API 提供了更多的功能和更好的性能。Date 类仍然存在,但在新的代码中更推荐使用新的日期时间 API。

实际上,JDK 17 中并没有 Date 类,从 JDK 1.1 开始,Date 类就已经存在,并且一直到 JDK 8 都是使用的是旧的日期时间 API。
从 JDK 8 开始,Java 推出了新的日期时间 API,其中包括 LocalDate、LocalDateTime、Instant 等类,这些类提供了更加强大和灵活的日期和时间处理能力。
如果同学们需要在 JDK 17 中处理日期和时间,建议使用新的日期时间 API,以下是使用新 API 处理日期和时间的示例代码。
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate currentDate = LocalDate.now();
System.out.println("当前日期:" + currentDate);
LocalTime currentTime = LocalTime.now();
System.out.println("当前时间:" + currentTime);
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println("当前日期时间:" + currentDateTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = currentDateTime.format(formatter);
System.out.println("格式化后的日期时间:" + formattedDateTime);
}
}上述代码中,我们使用了 LocalDate、LocalTime 和 LocalDateTime 类来分别表示日期、时间和日期时间。我们还使用 DateTimeFormatter 类将日期时间格式化为指定的格式。
请注意,JDK 17 中没有 Date 类,因此我们建议使用新的日期时间 API 来进行日期和时间处理,这些新的 API 提供了更多的功能和更好的性能,同时也更加符合现代的日期和时间处理需求。

Java 中有两个不同的 Date 类,一个是 java.util.Date,另一个是 java.sql.Date,它们之间有以下区别。
java.util.Date 的子类,用于表示日期,只包含年、月、日的信息,不包含时间。1970年1月1日00:00:00 GMT 以来的毫秒数。1970年1月1日00:00:00 GMT 以来的毫秒数,并将时间部分设置为0。Calendar、SimpleDateFormat 等。JDBC 进行数据库操作时,常用于将数据库中的日期值与Java中的类型进行转换。需要注意的是,在使用 Java 的新日期时间 API(如java.time包中的类)时,不再推荐使用
java.util.Date和java.sql.Date,而是使用新的类来表示和处理日期和时间,这些新的类提供了更丰富的功能和更好的性能。
总结起来,java.util.Date 用于表示日期和时间,而 java.sql.Date 用于表示日期(不包含时间),主要用于与数据库进行交互。
在 Java 中,虽然 Date 类在 JDK8 之后已经过时,但在早期版本中仍然有其应用场景,以下是一些使用 Date 类的常见场景。
before()、after() 和 equals() 等,可以用于判断两个时间的先后顺序。SimpleDateFormat 类将 Date 对象格式化为指定的字符串表示形式,用于将日期和时间显示为特定的格式。getTime() 方法,可以将 Date 对象转换为从标准基准时间 1970年1月1日00:00:00 GMT 到指定时间的毫秒数,用于时间的计算和比较。set 方法可以设置 Date 对象的年、月、日、小时、分钟和秒等时间组成部分,用于修改日期和时间。SimpleDateFormat 类将字符串解析为 Date 对象,用于将特定格式的日期字符串转换成 Date 对象。
一、Date类的作用是什么?
Date 类是 Java 中用于表示日期和时间的类,它提供了许多方法来获取、设置和操作日期和时间。
二、如何创建一个Date对象?
可以通过以下方式创建一个 Date 对象:
Date date = new Date();这将创建一个表示当前日期和时间的 Date对 象。
三、Date类中的常用方法有哪些?
Date 类提供了许多方法来处理日期和时间,常用的方法包括:
getTime():返回自1970年1月1日00:00:00以来的毫秒数。toString():将 Date 对象转换为字符串表示。getYear()、getMonth()、getDate():分别返回年份、月份、日期。getHours()、getMinutes()、getSeconds():分别返回小时、分钟、秒数。setYear()、setMonth()、setDate():设置年份、月份、日期。setHours()、setMinutes()、setSeconds():设置小时、分钟、秒数。四、Date类是否线程安全?
Date 类不是线程安全的,因为它的方法是可变的,可以修改日期和时间。如果在多个线程中共享 Date 对象,需要采取同步措施来确保线程安全性。
五、Date类有什么局限性?
Date 类存在一些局限性,例如:
本文讲解了 Java 中常用类 Date 的语法、使用说明和应用场景,并给出了样例代码。在下一篇博客中,将讲解 Java 中 Random 类的知识。