JAVA 的日期时间类总结2:JDk8新增日期类

本文深入探讨了Java 8引入的java.time包,包括LocalDate、LocalTime、LocalDateTime、Instant、DateTimeFormatter、Period和Duration等核心类。这些新API提供了更强大和易用的日期时间处理功能,如不变对象、丰富的转换和计算方法。通过实例代码演示了如何操作和计算日期时间间隔。
摘要由CSDN通过智能技术生成

从JDK8开始,java.time包提供了新的日期和时间API,主要涉及的类型有:

类型 解释
LocalDate 不包含具体时间的日期
LocalTime 不包含日期的时间
LocalDateTime 包含了日期以及时间
Instant 代表时间戳
DateTimeFormatter 用于做时间的格式化和解析的
Duration 用于计算两个”时间“间隔
Period 用于计算两个”日期“ 间隔

特点:

新增的API严格区分了时刻、本地日期、本地时间、并且对日期和时间进行运算更加方便。
其次,新的API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必被修改。

首先要介绍的是:

LocalDate、LocalTime、LocalDateTime

他们分别表示日期,时间,日期时间对象,他们的类的实例是不可变的对象。
他们三者构建对象的API是通用的。
常用方法:

方法名 说明 构建方式
public static Xxxx now() 静态方法,根据当前时间创建对象 LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
public static Xxxx of(…) 静态方法,指定日期/时间创建对象 LocalDate localDate1 = LocalDate.of(2021, 10, 9);
LocalTime localTime1 =LocalTime.of(11,25,10);
LocalDateTime localDateTime1=LocalDateTime.of(2022,02,20,8,9);

LocalDateTime 的转换API:

方法名 说明 构建方式
public LocalDate toLocalDate() 转换成一个LocalDate对象 LocalDate ld =LocalDateTime.toLocalDate(); //日期
public LocalDate toLocalTime() 转换成一个LocalTime对象 LocalTime lt=LocalDateTime.toLocalTime();//时间

修改时间相关API:

方法名 说明
plusDays,plusWeeks,plusMonths,plusYears 向前localDate对象添加几天、几周、几个月、几年
minusDays,minusWeeks,minusMonths,minusYears 从当前licalDate对象减去几天、几周、几个月、几年
withDayOfMonth,withDayOfYear,withMonth,withYear 将月份天数、年份天数、月份、年份修改为指定的值并返回新的LocalDate对象
isBefore, isAfter 比较两个LocalDate

代码案例演示


import java.time.*;


public class LocalDate1 {
   
    public static void main(String[] args) {
   

        LocalDate01();
        LocalTime02();
        LocalDateTime03();
        updateLocalDateTimeApi04();


    }

    private static void updateLocalDateTimeApi04() {
   


        LocalDate localDate = LocalDate.now();
        System.out.println("十天后:" + localDate.plusDays(10));
        System.out.println("一周后:" + localDate.plusWeeks(1));
        System.out.println("一月后:" + localDate.plusMonths(1));
        System.out.println("一年后:" + localDate.plusYears(1));

        System.out.println("十天前:" + localDate.minusDays(10));
        System.out.println("一周前:" + localDate.minusWeeks(1));
        System.out.println("一月前:" + localDate.minusMonths(1));
        System.out.println("一年前:" + localDate.minusYears(1));
        //修改: 
        System.out.println("修改至2018年:" + localDate.withYear(2018));
        System.out.println("修改至2月:" + localDate.withMonth(2));
        System.out.println("修改至18号:" + localDate.withDayOfMonth(18));
        System.out.println("修改至今年的第100天:" + localDate.withDayOfYear(100));


        System.out.println("----------------");
        LocalTime localTime = LocalTime.now();
        System.out.println("当前时间:" + localTime);
        System.out.println("一小时前:" + localTime.minusHours(1));
        System.out.println("一分钟前:" + localTime.minusMinutes(1));
        System.out.println("一秒钟前:" + localTime.minusSeconds(1));
        System.out.println("一纳秒前:" + localTime.minusNanos(1));

        System.out.println("一小时后:" + localTime.plusHours(1));
        System.out.println("一分钟后:" + localTime.plusMinutes(1));
        System.out.println("一秒钟后:" + localTime.plusSeconds(1));
        System.out.println("一纳秒后:" + l
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值