java.util.Date、
java.time.LocalDateTime等类
Java中,有多种方式可以定义时间类型,以下是一些常见的方法:
使用java.util.Date类
java.util.Date是Java早期版本中用于表示日期和时间的类,它可以表示从1970年1月1日00:00:00开始的毫秒数。
-
创建
Date对象:- 使用无参构造方法获取当前日期和时间:
Date now = new Date();
- 使用指定的毫秒数创建
Date对象:long millis = System.currentTimeMillis(); Date date = new Date(millis);
- 使用无参构造方法获取当前日期和时间:
-
常用方法:
after(Date when):判断此日期是否在指定日期之后。before(Date when):判断此日期是否在指定日期之前。compareTo(Date anotherDate):比较两个日期的顺序。equals(Object obj):比较两个日期的相等性。getTime():返回自1970年1月1日00:00:00 GMT以来,此Date对象表示的毫秒数。toString():把此Date对象转换为字符串。
使用java.util.Calendar类
java.util.Calendar是一个抽象类,主要用于日期之间的各种计算,它增加了毫秒的时间段,通过它可以获取时间点的毫秒值,而java.util.Date只是精确到秒。
-
获取
Calendar实例:- 使用
Calendar.getInstance()方法或调用其子类GregorianCalendar的构造器:Calendar calendar = Calendar.getInstance(); // 或者 Calendar calendar = new GregorianCalendar();
- 使用
-
常用方法:
get(int field):根据传入的字段常量获取相应的值,如Calendar.YEAR、Calendar.MONTH、Calendar.DATE等,注意,月份是从0开始的,所以需要加1才是实际的月份。set(int field, int value):设置指定字段的值。add(int field, int amount):在指定字段上添加或减去指定的时间量。getTime():将Calendar对象转换为Date对象。setTime(Date date):将Date对象转换为Calendar对象。
使用java.time.LocalDate类(Java 8及以上)
java.time.LocalDate是Java 8引入的日期类,它只表示日期,不包含时间信息。

-
创建
LocalDate对象:- 使用
now()方法获取当前日期:LocalDate today = LocalDate.now();
- 使用
of()方法手动指定日期:LocalDate date = LocalDate.of(2023, 10, 1);
- 使用
-
常用方法:
getYear():获取年份。getMonthValue():获取月份。getDayOfMonth():获取本月的第几天。plusDays(long daysToAdd):在当前日期上增加指定的天数。minusDays(long daysToSubtract):在当前日期上减去指定的天数。
使用java.time.LocalTime类(Java 8及以上)
java.time.LocalTime表示时间,不包含日期信息。
-
创建
LocalTime对象:- 使用
now()方法获取当前时间:LocalTime now = LocalTime.now();
- 使用
of()方法手动指定时间:LocalTime time = LocalTime.of(10, 30, 45); // 10点30分45秒
- 使用
-
常用方法:

getHour():获取小时数。getMinute():获取分钟数。getSecond():获取秒数。plusHours(long hoursToAdd):在当前时间上增加指定的小时数。minusHours(long hoursToSubtract):在当前时间上减去指定的小时数。
使用java.time.LocalDateTime类(Java 8及以上)
java.time.LocalDateTime表示不带时区的本地日期和时间。
-
创建
LocalDateTime对象:- 使用
now()方法获取当前的本地日期和时间:LocalDateTime localDateTime = LocalDateTime.now();
- 使用
of()方法手动指定日期和时间:LocalDateTime localDateTime = LocalDateTime.of(2023, 10, 1, 10, 30, 45);
- 使用
parse()方法从字符串解析日期和时间:LocalDateTime localDateTime = LocalDateTime.parse("2023-10-01T10:30:45");
- 使用
-
常用方法:
getYear()、getMonthValue()、getDayOfMonth()、getHour()、getMinute()、getSecond()等:获取相应的日期和时间字段值。plusDays(long daysToAdd)、minusDays(long daysToSubtract)等:对日期进行加减操作。with()方法:可以修改特定的字段值并返回一个新的LocalDateTime对象。
格式化日期和时间
在Java中,可以使用SimpleDateFormat(适用于java.util.Date和java.util.Calendar)或DateTimeFormatter(适用于java.time包中的类)来格式化日期和时间。
-
使用
SimpleDateFormat:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = sdf.format(new Date()); -
使用
DateTimeFormatter:DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDate = dtf.format(LocalDateTime.now());
| 类名 | 描述 | 是否包含时间 | 是否包含时区 | 常用方法 |
|---|---|---|---|---|
java.util.Date |
Java早期版本中的日期和时间类 | 是 | 否 | after(), before(), compareTo(), getTime(), toString()等 |
java.util.Calendar |
用于日期计算的抽象类 | 是(精确到毫秒) | 否 | get(), set(), add(), getTime(), setTime()等 |
java.time.LocalDate |
Java 8引入的日期类(仅日期) | 否 | 否 | getYear(), getMonthValue(), getDayOfMonth(), plusDays(), minusDays()等 |
java.time.LocalTime |
Java 8引入的时间类(仅时间) | 是 | 否 | getHour(), getMinute(), getSecond(), plusHours(), minusHours()等 |
java.time.LocalDateTime |
Java 8引入的本地日期和时间类 | 是 | 否 | getYear(), getMonthValue(), getDayOfMonth(), getHour(), getMinute(), getSecond(), plusDays(), minusDays(), with()等 |
相关问答FAQs
问题1:在Java中,如何将字符串转换为日期对象?
回答:在Java中,可以使用SimpleDateFormat或DateTimeFormatter来将字符串转换为日期对象,对于java.util.Date和java.util.Calendar,可以使用SimpleDateFormat的parse()方法;对于java.time包中的类,如LocalDate、LocalTime和LocalDateTime,可以使用DateTimeFormatter的parse()方法。
// 使用SimpleDateFormat将字符串转换为Date对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2023-10-01");
// 使用DateTimeFormatter将字符串转换为LocalDate对象
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse("2023-10-01", dtf);
问题2:在Java中,如何计算两个日期之间的天数差?
回答:在Java中,可以使用java.time.Period类来计算两个日期之间的天数差(适用于LocalDate对象),对于java.util.Date和java.util.Calendar,可以先将其转换为LocalDate,然后再使用Period进行计算。
// 使用LocalDate和Period计算两个日期之间的天数差 LocalDate date1 = LocalDate.of(2023, 10, 1); LocalDate date2 = LocalDate.now(); Period period = Period.between(date1, date2); long daysDifference = period.getDays(); // 获取
