Java8 日期api的简单介绍

前言

  • 在java8之前,我们处理日期会存在不少问题,比如日期转换繁琐,计算困难,线程安全等等各种问题。为了解决这些痛处,在java8中引入了java.time包,全新的日期处理方法从根本上解决了这些痛处。

常见的API说明

  • LocalDateTime 表示没有时区的日期时间,一般表示:年月日时分秒,不可变并且线程安全。

  • LocalDate 表示没有时区的日期时间,一般表示:年月日,不可变并且线程安全。

  • LocalTime 表示没有时区的日期时间,一般表示:时分秒,不可变并且线程安全。

  • ZoneId 时区的Id

  • ZonedDateTime 具有时区的日期时间,存储所有日期和时间字段,精度为纳秒,时区为区域偏移量,用于处理模糊的本地日期时间。

  • Instant 对时间轴上的单一瞬时点建模,表示时间线上的一个点(瞬时),主要用于Date和我们新的日期api之间相互转换

  • Duration 表示一段时间,可用于计算两个时间(时分秒等)间隔

  • Period 表示一段时间,可用于计算两个日期(年月日等)间隔

    我们主要围绕LocalDate、LocalTime、LocalDateTime三个基础对象来进行演示

使用示例

  • 获取当前时间,使用 now() 来创建对象
LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
ZonedDateTime zonedDateTime = ZonedDateTime.now();
Instant instant = Instant.now();
Year year = Year.now();
YearMonth yearMonth = YearMonth.now();
MonthDay monthDay = MonthDay.now();
System.out.println("localDateTime:" + localDateTime);
System.out.println("localDate:" + localDate);
System.out.println("localTime:" + localTime);
System.out.println("zonedDateTime:" + zonedDateTime);
System.out.println("instant:" + instant);
System.out.println("year:" + year);
System.out.println("yearMonth:" + yearMonth);
System.out.println("monthDay:" + monthDay);

---控制台输出---
localDateTime:2021-09-21T20:49:56.544
localDate:2021-09-21
localTime:20:49:56.544
zonedDateTime:2021-09-21T20:49:56.544+08:00[Asia/Shanghai]
instant:2021-09-21T12:49:56.545Z
year:2021
yearMonth:2021-09
monthDay:--09-21
  • 使用 of() 指定时间日期的创建
LocalDateTime localDateTime = LocalDateTime.of(2021, 9, 21, 6, 30, 10);
LocalDate localDate = LocalDate.of(2021, 9, 21);
LocalTime localTime = LocalTime.of(6, 30, 10);
System.out.println("localDateTime:" + localDateTime);
System.out.println("localDate:" + localDate);
System.out.println("localTime:" + localTime);
//其中LocalDateTime可以传入localDate和localTime来创建
LocalDateTime localDateTime2 = LocalDateTime.of(localDate, localTime);
System.out.println("localDateTime2:" + localDateTime2);

---控制台输出
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java 8中,可以使用`DateTimeFormatter`类来格式化日期。 以下是一个示例代码,可以将日期格式化为指定的字符串格式: ```java import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateFormatExample { public static void main(String[] args) { // 创建一个 LocalDateTime 对象 LocalDateTime now = LocalDateTime.now(); // 创建一个日期时间格式化对象 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 使用格式化对象将日期格式化为字符串 String formattedDateTime = now.format(formatter); // 输出格式化后的日期字符串 System.out.println("Formatted date time: " + formattedDateTime); } } ``` 在上面的示例中,我们首先创建了一个`LocalDateTime`对象,表示当前日期和时间。然后,我们使用`DateTimeFormatter`类创建了一个日期时间格式化对象,并指定了格式化字符串`"yyyy-MM-dd HH:mm:ss"`,表示年份-月份-日期 时:分:秒的格式。最后,我们使用格式化对象将`LocalDateTime`对象格式化为字符串,并输出该字符串。 ### 回答2: 在Java 8中,日期格式化是通过`DateTimeFormatter`类来实现的。这个类提供了许多预定义的格式化模式,也支持自定义格式化模式。 要使用`DateTimeFormatter`类进行日期格式化,首先需要创建一个实例,并指定所需的格式。例如,如果我们想将一个`LocalDate`对象格式化为"yyyy-MM-dd"的形式,可以使用以下代码: ```java LocalDate date = LocalDate.now(); // 获取当前日期 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 创建格式化器 String formattedDate = date.format(formatter); // 使用格式化器格式化日期 System.out.println(formattedDate); // 输出格式化后的日期 ``` 上述代码中,我们首先使用`LocalDate.now()`获取了当前日期,然后创建了一个指定格式为"yyyy-MM-dd"的`DateTimeFormatter`对象。接下来,我们使用`format()`方法将`LocalDate`对象格式化为字符串,并将结果赋给`formattedDate`变量。最后,我们通过`System.out.println()`方法将格式化后的日期输出到控制台。 除了预定义的格式化模式,`DateTimeFormatter`还支持自定义格式化模式,可以根据需求灵活设置日期的格式。比如,如果我们想将日期格式化为"MM/dd/yyyy HH:mm:ss"的形式,可以使用以下代码: ```java LocalDateTime dateTime = LocalDateTime.now(); // 获取当前日期时间 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss"); // 创建格式化器 String formattedDateTime = dateTime.format(formatter); // 使用格式化器格式化日期时间 System.out.println(formattedDateTime); // 输出格式化后的日期时间 ``` 上述代码中,我们使用`LocalDateTime.now()`获取了当前日期时间,然后创建了一个指定格式为"MM/dd/yyyy HH:mm:ss"的`DateTimeFormatter`对象。接下来,我们使用`format()`方法将`LocalDateTime`对象格式化为字符串,并将结果赋给`formattedDateTime`变量。最后,我们通过`System.out.println()`方法将格式化后的日期时间输出到控制台。 总结起来,Java 8提供了强大且灵活的日期格式化功能,通过`DateTimeFormatter`类可以方便地进行日期的格式化。无论是使用预定义的格式化模式还是自定义格式化模式,我们都可以通过`format()`方法将日期格式化为所需的形式。 ### 回答3: Java 8 引入了新的日期时间 API,使日期格式化变得更加简单和灵活。在Java 8之前,我们通常使用SimpleDateFormat类来格式化日期,但这个类存在线程安全问题。Java 8 的新日期时间 API是线程安全的,并且提供了一种更好的方式来格式化日期Java 8 提供了DateTimeFormatter类,用于格式化日期和时间。我们可以使用DateTimeFormatter的ofPattern()方法,传入一个模式来指定日期格式。模式是一个由各种字符组成的字符串,每个字符代表了一个日期或时间元素的格式。例如,"yyyy-MM-dd"代表了年份、月份和日期的格式。 下面是一个例子,展示了如何使用DateTimeFormatter来格式化日期: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class DateTimeFormatting { public static void main(String[] args) { LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = currentDate.format(formatter); System.out.println("Formatted date: " + formattedDate); } } ``` 上述代码中,我们首先获取了当前日期,并创建了一个DateTimeFormatter对象来指定日期格式。然后,我们使用format()方法将当前日期格式化为指定格式的字符串。最后,我们输出格式化后的日期。 运行上述代码,将会得到类似于"2022-01-01"的格式化日期。 除了日期之外,我们还可以格式化时间和日期时间。DateTimeFormatter还提供了对应的字符来表示小时、分钟、秒等时间元素的格式。 总的来说,Java 8提供了简单、安全和灵活的日期格式化方式,通过DateTimeFormatter类的ofPattern()方法,我们能轻松地指定任何我们想要的日期格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值