Java8 新特性LocalDateTime API 的详细使用

文章目录

  • 一、创建LocalDateTime对象:
  • 二 、获取日期和时间信息:
  • 三、修改日期和时间:
  • 四、增加或减少日期和时间:
  • 五、格式化日期和时间:
  • 六、LocalDateTime和Date互相转换:
    • 1. LocalDateTime转换为Date:
    • 2. Date转换为LocalDateTime:

Java 8 引入了一个新的日期和时间API,其中包括了LocalDateTime类。

LocalDateTime类表示了日期和时间,但不包含时区信息。下面是LocalDateTime类的基本使用方法:

一、创建LocalDateTime对象:

你可以使用of方法来创建一个指定的日期和时间的LocalDateTime对象。例如,下面的代码创建了一个表示2019年10月31日23点59分59秒的LocalDateTime对象:

LocalDateTime dateTime = LocalDateTime.of(2019, 10, 31, 23, 59, 59);

二 、获取日期和时间信息:

你可以使用getYear、getMonth、getDayOfMonth等方法来获取LocalDateTime对象中的日期和时间信息。例如,下面的代码分别获取了LocalDateTime对象中的年、月、日、小时、分钟和秒:

int year = dateTime.getYear();
int month = dateTime.getMonthValue();
int day = dateTime.getDayOfMonth();
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();

三、修改日期和时间:

你可以使用with方法来修改LocalDateTime对象的日期和时间。例如,下面的代码将LocalDateTime对象的月份修改为11,并将小时修改为8:

LocalDateTime modifiedDateTime = dateTime.withMonth(11).withHour(8);

四、增加或减少日期和时间:

你可以使用plus和minus方法来增加或减少LocalDateTime对象的日期和时间。例如,下面的代码将LocalDateTime对象的日期增加一天,并将小时减少3小时:

LocalDateTime newDateTime = dateTime.plusDays(1).minusHours(3);

五、格式化日期和时间:

你可以使用DateTimeFormatter类来格式化LocalDateTime对象的日期和时间。例如,下面的代码将LocalDateTime对象格式化为"yyyy-MM-dd HH:mm:ss"的字符串:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);

这些是LocalDateTime类的一些基本使用方法。通过这些方法,你可以轻松地处理日期和时间。

六、LocalDateTime和Date互相转换:

1. LocalDateTime转换为Date:

可以使用toInstant()方法将LocalDateTime转换为Instant对象,再使用Date.from()方法将Instant对象转换为Date对象。

示例代码如下:

LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);

2. Date转换为LocalDateTime:

可以使用toInstant()方法将Date对象转换为Instant对象,再使用atZone()方法将Instant对象转换为指定时区的ZonedDateTime对象,最后使用toLocalDateTime()方法将ZonedDateTime对象转换为LocalDateTime对象。

示例代码如下:

Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();

需要注意的是,LocalDateTime和Date的精度不同,LocalDateTime包含纳秒级的精确度,而Date只能精确到毫秒级。在转换时可能会有精度损失。另外,Date是可变对象,而LocalDateTime是不可变对象。

你可能感兴趣的:(《Java基础》专栏,java)