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

Java中的时间日期函数和判定

发布时间:2023-06-19 19:27:04

Java中的时间日期函数和判定

Java中的时间日期类是Java程序开发中非常常用的一个类,它使程序可以轻松地进行时间和日期的计算、转换和比较。本文将介绍Java中的时间日期函数和判定。

一、日期类

Java中的日期类是java.util.Date,它保存了一个特定的瞬时点,对于其余的所有的时间日期的操作都是基于这个点的。在Java7之前,它是 的可以表示日期和时间的类。但是它有一个很大的缺点,就是不支持时区的处理。

Java7之后,Java引入了新的日期时间API,它是由java.time包中的类组成。这个API是基于国际标准ISO-8601而制定的,当然也是Java世界里的新标准。它支持本地时间和时间区的处理,并且提出了更多新的概念,如时区、本地时间、时刻以及时间段等等。具体来说,它包括以下几个类:

1. LocalDate:表示日期,例如 2018-06-03。

2. LocalTime:表示时间,例如 10:15:30。

3. LocalDateTime:表示日期+时间,例如 2018-06-03T10:15:30。

4. ZonedDateTime:表示带时区的日期+时间,例如 2018-06-03T10:15:30+08:00 [Asia/Shanghai]。

5. Instant:表示机器可读的日期+时间,例如 2018-06-03T02:15:30Z。

6. Duration:表示时间段,例如 10 seconds。

7. Period:表示日期段,例如 10 days。

这些类都提供了常用的方法,可用于计算时间、比较时间和格式化时间等操作。下面我们来逐一介绍这些类。

二、日期时间函数

1. LocalDate类

在Java中,使用LocalDate类表示日期。具体的使用方法如下:

// 获取当前日期时间

LocalDate date = LocalDate.now(); // 2018-06-03

// 创建一个日期时间对象

LocalDate date2 = LocalDate.of(2018, 6, 3); // 2018-06-03

// 获取日期时间的年、月、日

int year = date.getYear(); // 2018

int month = date.getMonthValue(); // 6

int day = date.getDayOfMonth(); // 3

// 获取日期时间是星期几

DayOfWeek dow = date.getDayOfWeek(); // SUNDAY

// 获取一年中的第几天

int doy = date.getDayOfYear(); // 154

// 判断是否是闰年

boolean leap = date.isLeapYear(); // false

2. LocalTime类

在Java中,使用LocalTime类表示时间。具体的使用方法如下:

// 获取当前时间

LocalTime time = LocalTime.now(); // 10:15:30

// 创建一个时间对象

LocalTime time2 = LocalTime.of(10, 15, 30); // 10:15:30

// 获取时间的小时、分钟、秒、毫秒

int hour = time.getHour(); // 10

int minute = time.getMinute(); // 15

int second = time.getSecond(); // 30

int millisecond = time.getNano()/1000000; // 0

3. LocalDateTime类

LocalDateTime类是前两个类的合并,它表示同时携带了日期和时间。使用方法如下:

// 获取当前日期时间

LocalDateTime dt = LocalDateTime.now(); // 2018-06-03T10:15:30

// 创建一个日期时间对象

LocalDateTime dt2 = LocalDateTime.of(2018, Month.JUNE, 3, 10, 15, 30); // 2018-06-03T10:15:30

4. ZonedDateTime类

ZonedDateTime类是带时区的日期时间表示法。使用方法如下:

// 获取当前日期时间

ZonedDateTime zdt = ZonedDateTime.now(); // 2018-06-03T10:15:30+08:00[Asia/Shanghai]

// 创建一个日期时间对象

ZonedDateTime zdt2 = ZonedDateTime.of(2018, 6, 3, 10, 15, 30, 0, ZoneId.of("Asia/Shanghai"));

5. Instant类

在Java中,可以使用Instant类表示日期时间。它表示从1970年1月1日0时0分0秒开始经过的秒数。具体的使用方法如下:

// 获取当前时间

Instant now = Instant.now(); // 2018-06-03T02:15:30Z

// 创建一个时间对象

Instant instant = Instant.ofEpochSecond(1527973200); // 2018-06-03T02:20:00Z

6. Duration类

在Java中,可以使用Duration类表示时间段。它用于表示一段时间的时长,例如5秒。具体的使用方法如下:

// 获取两个时间的之间的时长

Duration duration = Duration.between(start, end);

// 获取时长的值,单位为“秒”

long seconds = duration.getSeconds();

7. Period类

在Java中,可以使用Period类表示日期段。它用于表示一段日期的间隔,例如1个月。具体的使用方法如下:

// 获取两个日期之间的时长

Period period = Period.between(startDate, endDate);

// 获取日期段的值,单位为“天”

int days = period.getDays();

三、日期时间判定

在Java中,判断两个时间的关系是非常常见的操作。它可以用于计算距离当前时间还有多久或计算一个时间是否在另一个时间之前或之后等。下面我们来介绍常用的时间判定的方法。

1. 获取当前时间

// 获取当前时间

LocalDateTime localDateTime = LocalDateTime.now();

2. 判断时间是否在某个时间之后

// 获取比较的时间

LocalDateTime compareDateTime = LocalDateTime.of(2019, 01, 01, 0, 0, 0);

        

// 比较时间

if (localDateTime.isAfter(compareDateTime)) {

    System.out.println("比2019年1月1日晚");

}

3. 判断时间是否在某个时间之前

// 获取比较的时间

LocalDateTime compareDateTime = LocalDateTime.of(2019, 01, 01, 0, 0, 0);

        

// 比较时间

if (localDateTime.isBefore(compareDateTime)) {

    System.out.println("比2019年1月1日早");

}

4. 判断两个时间是否相等

// 获取比较的时间

LocalDateTime compareDateTime = LocalDateTime.of(2019, 06, 03, 10, 15, 30);

        

// 比较时间

if (localDateTime.isEqual(compareDateTime)) {

    System.out.println("相等");

}

5. 判断时间是否在某段时间内

// 获取时间段

LocalDateTime startDateTime = LocalDateTime.of(2019, 06, 03, 0, 0, 0);

LocalDateTime endDateTime = LocalDateTime.of(2019, 06, 05, 23, 0, 0);

        

// 判断时间是否在时间段内

if (localDateTime.isAfter(startDateTime) && localDateTime.isBefore(endDateTime)) {

    System.out.println("在时间段内");

}

四、总结

本篇文章,我们讲了Java中的时间日期相关的函数和判定。Java中的时间日期类很容易使用,并且提供了很多好用的方法。在日常开发中,我们经常需要使用它来进行时间日期相关的操作,所以我们需要熟悉这一部分的内容。