Java 8 LocalDateTime日期时间处理类使用示例教程

x33g5p2x  于2021-08-22 转载在 Java  
字(10.6k)|赞(0)|评价(0)|浏览(569)

LocalDateTime是用来表示日期和时间的组合。
当我们需要一个日期和时间的组合时,这是最常用的类。该类提供了多种API,我们将看一下一些最常用的API。

java.time.LocalDateTime类是一个不可变的类,它表示一个没有时区信息的日期时间,如'2018-08-12T10:35:55'。
LocalDateTime cLass提供了很多处理本地日期和时间的API/方法,所以在这篇文章中,我们将讨论一些重要的和经常使用的LocalDateTimeAPI/方法和例子。
为了更好地理解,让我们把这些方法分类为它们的用法,并举例加以说明。 

LocalDateTime APIs/Methods

1. 用于当前日期时间和特定日期时间对象的LocalDateTime APIs

  • static LocalDateTime now() - 从默认时区的系统时钟获取当前日期时间。
  • static LocalDateTime now(Clock clock) - 从指定的时钟获取当前的日期时间。
  • static LocalDateTime now(ZoneId zone) - 从指定时区的系统时钟获取当前的日期时间。

2. 从LocalDateTime获取年、月、日的API

  • int getYear() - 获取年字段。
  • Month getMonth() - 使用Month枚举来获取年月字段。
  • int getDayOfMonth() - 获得月中的日字段。
  • DayOfWeek getDayOfWeek() - 获得周的日期字段,它是DayOfWeek的一个枚举。
  • int getDayOfYear() - 获得年的日期字段。

3. 从LocalDateTime获取小时、分钟、秒的API

  • int getHour() - 获取小时-日字段。
  • int getMinute() - 获得小时中的分钟字段。
  • int getNano() - 获得秒的纳米字段。
  • int getSecond() - 获得分钟内的秒字段。

4. LocalDateTime的API,用于在LocalDateTime中添加或减去年、月、日、小时、分钟和秒。

  • LocalDateTime plusDays(long days) - 返回该LocalDateTime的副本,并添加指定的天数。
  • LocalDateTime plusHours(long hours) - 返回这个LocalDateTime的副本,并添加指定的小时数。
  • LocalDateTime plusMinutes(long minutes) - 返回此LocalDateTime的副本,并添加指定的分钟数。
  • _LocalDateTime plusMonths(long months) _- 返回这个LocalDateTime的副本,并添加指定的月数。
  • LocalDateTime plusNanos(long nanos) _- 返回这个LocalDateTime的副本,并添加指定的纳秒数。
  • LocalDateTime plusSeconds(long seconds) - 返回这个LocalDateTime的副本,并添加指定的秒数。
  • LocalDateTime plusWeeks(long weeks) - 返回此LocalDateTime的副本,并添加指定的周数。
  • LocalDateTime plusYears(long years) - 返回此LocalDateTime的副本,并添加指定的年数。
  • LocalDateTime minusDays(long days) - 返回此LocalDateTime的副本,并减去指定的天数。
  • LocalDateTime minusHours(long hours) - 返回此LocalDateTime的副本,并减去指定的小时数。
  • LocalDateTime minusMinutes(long minutes) - 返回这个LocalDateTime的副本,并减去指定的分钟数。
  • LocalDateTime minusMonths(long months) - 返回这个LocalDateTime的副本,并减去指定的月数。
  • LocalDateTime minusNanos(long nanos) - 返回这个LocalDateTime的副本,并减去指定的纳秒数。
  • LocalDateTime minusSeconds(long seconds) - 返回这个LocalDateTime的副本,并减去指定的秒数。
  • LocalDateTime minusWeeks(long weeks) - 返回这个LocalDateTime的副本,并减去指定的星期数。
  • LocalDateTime minusYears(long years) - 返回此LocalDateTime的副本,并减去指定的年数。

5. 用于比较Java中LocalDateTime对象的LocalDateTime APIs

  • boolean isAfter(ChronoLocalDateTime<?> other) - 检查此日期时间是否在指定日期时间之后。
  • boolean isBefore(ChronoLocalDateTime<?> other) - 检查该日期时间是否在指定日期时间之前。
  • boolean isEqual(ChronoLocalDateTime<?> other) - 检查此日期时间是否等于指定的日期时间。
  • int compareTo(ChronoLocalDateTime<?> other) - 将此日期时间与另一日期时间相比较。

6. 在Java中从LocalDateTime转换为LocalDateTime的API

  • LocalDate toLocalDate() - 获取此日期时间的LocalDate部分。

7. 在Java中从LocalDateTime转换到LocalTime的API

  • LocalTime toLocalTime() - 获取该日期时间的LocalTime部分。
    让我们以实例来讨论上述API

1. 用于当前日期时间和特定日期时间对象的LocalDateTime APIs

LocalDateTime类提供了以下API,分别用于创建当前日期时间和特定日期时间对象。

  • static LocalDateTime now() - 从默认时区的系统时钟获取当前日期时间。
  • static LocalDateTime now(Clock clock) - 从指定的时钟获取当前的日期时间。
  • static LocalDateTime now(ZoneId zone) - 从指定时区的系统时钟获取当前的日期时间。
import java.time.Clock;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.ZoneId;

//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/

public class LocalDateTimeExample {

 public static void main(String[] args) {
  createLocalDateTime();
 }
 private static void createLocalDateTime() {
  // Current date time
  LocalDateTime dateTime = LocalDateTime.now();
  System.out.println(dateTime);

  // Current date time from specified time-zone
  LocalDateTime dateTime2 = LocalDateTime.now(ZoneId.of("UTC"));
  System.out.println(dateTime2);

  // Current date time from specified clock
  LocalDateTime dateTime3 = LocalDateTime.now(Clock.systemUTC());
  System.out.println(dateTime3);

  // Specific date time
  LocalDateTime dateTime4 = LocalDateTime.of(2017, Month.JULY, 12, 10, 35, 55);
  System.out.println(dateTime4);

 }

}

输出。

2018-08-10T18:08:43.787
2018-08-10T12:38:43.789
2018-08-10T12:38:43.789
2017-07-12T10:35:55

2. 从LocalDateTime获取年、月、日的API

LocalDateTime类提供以下API,从LocalDateTime获取年、月、日。

  • int getYear() - 获取年字段。
  • Month getMonth() - 使用Month枚举来获取年月字段。
  • int getDayOfMonth() - 获得月中的日字段。
  • DayOfWeek getDayOfWeek() - 获得星期的字段,它是一个枚举DayOfWeek。
  • int getDayOfYear() - 获得年月日字段。
import java.time.LocalDateTime;

//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/

public class LocalDateTimeExample {

 public static void main(String[] args) {
  getYearMonthDayFromLocalDateTime();
 }
 private static void getYearMonthDayFromLocalDateTime() {
  LocalDateTime dateTime = LocalDateTime.now();
  System.out.println("Year : " + dateTime.getYear());
  System.out.println("Month : " + dateTime.getMonth().getValue());
  System.out.println("Day of Month : " + dateTime.getDayOfMonth());
  System.out.println("Day of Week : " + dateTime.getDayOfWeek());
  System.out.println("Day of Year : " + dateTime.getDayOfYear());
 }
}

输出。

Year : 2018
Month : 8
Day of Month : 10
Day of Week : FRIDAY
Day of Year : 222

3. 从LocalDateTime获取小时、分钟、秒的API

LocalDateTime类提供了以下API来从LocalDateTime中获取小时、分钟、秒。

  • int getHour() - 获取一天中的小时字段。
  • int getMinute() - 获取小时中的分钟字段。
  • int getNano() - 获得秒的纳米数字段。
  • int getSecond() - 获得分钟内的秒字段。
import java.time.LocalDateTime;

//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/

public class LocalDateTimeExample {

 public static void main(String[] args) {
  getHourMinuteSecondfromLocalDateTime();
 }

 private static void getHourMinuteSecondfromLocalDateTime() {
  LocalDateTime dateTime = LocalDateTime.now();
  System.out.println("Hour : " + dateTime.getHour());
  System.out.println("Minute : " + dateTime.getMinute());
  System.out.println("Second : " + dateTime.getSecond());
  System.out.println("Nano : " + dateTime.getNano());
 }

}

4. 向LocalDateTime添加或减去年、月、日、小时、分钟和秒的API

LocalDateTime类提供以下API,用于在LocalDateTime中添加或减去年、月、日、小时、分钟和秒。

  • LocalDateTime plusDays(long days) - 返回该LocalDateTime的副本,并添加指定的天数。
  • LocalDateTime plusHours(long hours) - 返回这个LocalDateTime的副本,并添加指定的小时数。
  • LocalDateTime plusMinutes(long minutes) - 返回此LocalDateTime的副本,并添加指定的分钟数。
  • _LocalDateTime plusMonths(long months) _- 返回这个LocalDateTime的副本,并添加指定的月数。
  • LocalDateTime plusNanos(long nanos) _- 返回此LocalDateTime的副本,并添加指定的纳秒数。
  • LocalDateTime plusSeconds(long seconds) - 返回这个LocalDateTime的副本,并添加指定的秒数。
  • LocalDateTime plusWeeks(long weeks) - 返回此LocalDateTime的副本,并添加指定的周数。
  • LocalDateTime plusYears(long years) - 返回此LocalDateTime的副本,并添加指定的年数。
  • LocalDateTime minusDays(long days) - 返回此LocalDateTime的副本,并减去指定的天数。
  • LocalDateTime minusHours(long hours) - 返回此LocalDateTime的副本,并减去指定的小时数。
  • LocalDateTime minusMinutes(long minutes) - 返回这个LocalDateTime的副本,并减去指定的分钟数。
  • LocalDateTime minusMonths(long months) - 返回这个LocalDateTime的副本,并减去指定的月数。
  • LocalDateTime minusNanos(long nanos) - 返回这个LocalDateTime的副本,并减去指定的纳秒数。
  • LocalDateTime minusSeconds(long seconds) - 返回这个LocalDateTime的副本,并减去指定的秒数。
  • LocalDateTime minusWeeks(long weeks) - 返回这个LocalDateTime的副本,并减去指定的星期数。
  • LocalDateTime minusYears(long years) - 返回此LocalDateTime的副本,并减去指定的年数。
//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateTimeExample {

 public static void main(String[] args) {
  addOrSubstractUsingLocalDateTime();
 }

 private static void addOrSubstractUsingLocalDateTime() {
  LocalDateTime dateTime = LocalDateTime.now();
  // LocalDateTime's plus methods
  System.out.println("Addition of days : " + dateTime.plusDays(5));
  System.out.println("Addition of months : " + dateTime.plusMonths(15));
  System.out.println("Addition of years : " + dateTime.plusYears(5));
  System.out.println("Addition of Hours : " + dateTime.plusHours(2));
  System.out.println("Addition of Minutes : " + dateTime.plusMinutes(30));
  System.out.println("Addition of Seconds : " + dateTime.plusSeconds(20));

  // LocalDateTime's minus methods
  System.out.println("Subtraction of days : " + dateTime.minusDays(5));
  System.out.println("Subtraction of months : " + dateTime.minusMonths(15));
  System.out.println("Subtraction of years : " + dateTime.minusYears(5));
  System.out.println("Subtraction of Hours : " + dateTime.minusHours(2));
  System.out.println("Subtraction of Minutes : " + dateTime.minusMinutes(30));
  System.out.println("Subtraction of Seconds : " + dateTime.minusSeconds(20));
 }

}

输出。

Addition of days : 2018-08-15T18:14:13.385
Addition of months : 2019-11-10T18:14:13.385
Addition of years : 2023-08-10T18:14:13.385
Addition of Hours : 2018-08-10T20:14:13.385
Addition of Minutes : 2018-08-10T18:44:13.385
Addition of Seconds : 2018-08-10T18:14:33.385
Subtraction of days : 2018-08-05T18:14:13.385
Subtraction of months : 2017-05-10T18:14:13.385
Subtraction of years : 2013-08-10T18:14:13.385
Subtraction of Hours : 2018-08-10T16:14:13.385
Subtraction of Minutes : 2018-08-10T17:44:13.385
Subtraction of Seconds : 2018-08-10T18:13:53.385

5. 在Java中比较LocalDateTime对象的LocalDateTime APIs

LocalDateTime类提供了以下API来比较Java中的LocalDateTime对象。

  • boolean isAfter(ChronoLocalDateTime<?> other) - 检查该日期时间是否在指定日期时间之后。
  • boolean isBefore(ChronoLocalDateTime<?> other) - 检查这个日期时间是否在指定日期时间之前。
  • boolean isEqual(ChronoLocalDateTime<?> other) - 检查此日期时间是否等于指定的日期时间。
  • int compareTo(ChronoLocalDateTime<?> other) - 将此日期时间与另一日期时间相比较。
import java.time.LocalDateTime;

//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/

public class LocalDateTimeExample {

 public static void main(String[] args) {
  compareLocalDateTimeObjects();
 }


 private static void compareLocalDateTimeObjects() {
  LocalDateTime dateTime1 = LocalDateTime.of(2017, 05, 22, 10, 55, 25);
  LocalDateTime dateTime2 = LocalDateTime.of(2017, 06, 11, 05, 35, 26);
  LocalDateTime dateTime3 = LocalDateTime.of(2017, 05, 22, 10, 55, 25);

  // Using isBefore() method
  if (dateTime1.isBefore(dateTime2)) {
   System.out.println("dateTime1 is before dateTime2");
  }

  // Using isAfter() method
  if (dateTime2.isAfter(dateTime3)) {
   System.out.println("dateTime2 is after dateTime3");
  }

  // Using isEqual() method
  if (dateTime1.isEqual(dateTime3)) {
   System.out.println("dateTime1 is equal to dateTime3");
  }

  // Using compareTo() method
  if (dateTime1.compareTo(dateTime3) == 0) {
   System.out.println("dateTime1 is equal to dateTime3");
  }

 }

}

输出。

dateTime1 is before dateTime2
dateTime2 is after dateTime3
dateTime1 is equal to dateTime3
dateTime1 is equal to dateTime3

6. 在Java中从LocalDateTime转换为LocalDate的API

LocalDateTime类提供了以下API,可以在Java中从LocalDateTime转换为LocalDate。

  • LocalDate toLocalDate() - 获取该日期时间的LocalDate部分。
import java.time.LocalDate;
import java.time.LocalDateTime;

//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateTimeExample {

 public static void main(String[] args) {
  convertLocalDateTimeToLocalDate();
 }

 private static void convertLocalDateTimeToLocalDate() {
  LocalDateTime dateTime = LocalDateTime.now();
  System.out.println(dateTime);

  LocalDate localDate = dateTime.toLocalDate();
  System.out.println(localDate);
 }
}

输出。

2018-08-10T18:16:35.802
2018-08-10

7. 在Java中从LocalDateTime转换为LocalTime的API

LocalDateTime类提供了以下API,用于在Java中从LocalDateTime转换为LocalTime。

  • LocalTime toLocalTime() - 获取该日期时间的LocalTime部分。
import java.time.LocalDateTime;
import java.time.LocalTime;

//*/*
/* Program to demonstrate LocalDateTime Class APIs.
/* @author javaguides.net
/*
/*/

public class LocalDateTimeExample {

 public static void main(String[] args) {
  convertLocalDateTimeToLocalTime();
 }

 private static void convertLocalDateTimeToLocalTime() {
  LocalDateTime dateTime = LocalDateTime.now();
  System.out.println(dateTime);

  LocalTime localDate = dateTime.toLocalTime();
  System.out.println(localDate);
 }

}

输出。

2018-08-10T18:17:08.598
18:17:08.598

相关文章