通过java代码对日期进行操作

130 阅读2分钟

前言

日常开发中我经常需要对日期进行一些相关操作,比如日期间的大小对比,计算当前日期七天后的日期,这个月有几个周日等等操作。今天我们就来简单的对相关日期的操作做一些了解。

在Java8之后的版本中,引入了java.time 包,它提供了一套全新的日期和时间相关的 API,可以让开发者更加方便、简洁地处理日期和时间。其API 是基于 Joda-Time 库设计的,解决了以往 旧版本的Java日期和时间 API(如 java.util.Date 和 java.util.Calendar)的一些相关问题。

java.time工具类包中的主要类:

  • LocalDate:表示一个日期(年、月、日),但不包含时间信息。
  • LocalTime:表示一天中的一个时间(小时、分钟、秒、纳秒),但是不包含日期信息。
  • LocalDateTime:表示一个具体的日期和时间。
  • ZonedDateTime:表示一个带时区的日期和时间。
  • Instant:表示一个时间戳,通常用于表示从 1970-01-01T00:00:00 开始的时间。

日期和时间的创建:

  • 调用 now() 方法获取当前日期、时间或日期时间。
  • 调用 of() 方法根据给出的参数来创建一个日期、时间或日期时间对象。

日期和时间的计算与操作:

  • 调用 plus() 和 minus() 方法来对日期和时间进行加法、减法操作。
  • 调用 with() 方法来更改日期和时间的某一部分(如更改年份、月份等)。
  • 调用 isBefore()isAfter() 和 isEqual() 方法来比较两个日期或时间对象。

日期和时间的格式化与解析:

  • 调用 DateTimeFormatter 类进行日期和时间的格式化与解析。
  • 使用预定义的格式化模式(如 DateTimeFormatter.ISO_LOCAL_DATE)或自定义模式。

时间间隔和单位:

  • 调用 java.time.temporal.ChronoUnit 枚举表示日期和时间的单位(如年、月、日、小时等)。
  • 调用 java.time.Duration 和 java.time.Period 类表示时间段。
  • 调用 between() 方法计算两个日期或时间对象之间的时间差。

在 Java 中,可以使用 java.time 包中的 LocalDate 类和 ChronoUnit 枚举的方式来计算两个日期之间相差的天数。例:

public class test {

    public static void main(String[] args) {
        // 定义两个日期
        LocalDate date1 = LocalDate.of(2023, 4, 20);
        LocalDate date2 = LocalDate.of(2023, 5, 21);

        // 计算两个日期之间的天数
        long daysBetween = ChronoUnit.DAYS.between(date1, date2);
        System.out.println("相差天数: " + daysBetween);
    }
}