API(4)-jdk新增的时间- LocalDate、LocalTime、LocalDateTime

本文详细介绍了JavaDevelopmentKit8中新增的LocalDate、LocalTime、LocalDateTime类以及ZoneId时区处理、Instant时间戳的精确度提升、DateTimeFormat日期时间格式化和Period/Duration时间段概念。通过实例展示了这些类的用法和功能。
摘要由CSDN通过智能技术生成

学习JDK新增的时间的原因 

JDK8新增的时间

 LocalDate、LocalTime、LocalDateTime

  LocalDate、LocalTime、LocalDateTime的用法和LocalDate大致相同,示例:

package com.zz.TimeAdd;

import java.time.LocalDate;

public class Test {
    public static void main(String args[]){
        //1.获取本地日期对象(不可变对象)
        LocalDate ld = LocalDate.now();//年 月 日
        System.out.println(ld);

        //2.获取日期对象中的信息
        int year = ld.getYear();//年
        int month = ld.getMonthValue();//月(1-12)
        int day = ld.getDayOfMonth();//日
        int dayOfYear = ld.getDayOfYear();//一年中的第几天
        int dayOfWeek = ld.getDayOfWeek().getValue();//星期几
        System.out.println(year);
        System.out.println(dayOfWeek);
        System.out.println(dayOfYear);

        //3.直接修改某个信息:withYear,withMonth,withDayOfMonth,withDayOfYear
        LocalDate ld2 = ld.withYear(2099);
        System.out.println(ld2);

        //4.把某个信息价多少:plusYears,plusMonths,plusDays,plusWeeks
        LocalDate ld3 = ld.plusMonths(3);
        System.out.println(ld3);

        //5.把某个减多少,minusYears,minusMonths,minusDays,minusWeeks
        LocalDate ld4 = ld.minusYears(1);
        System.out.println(ld4);

        //6.获取指定日期的LocalDate对象, public static LocalDate of(int year, int month, int day)
        LocalDate ld5 = LocalDate.of(2089, 12, 13);
        LocalDate ld6 = LocalDate.of(2089, 12, 13);
        System.out.println(ld5);

        //7.判断2个日期对象,是否相等个,在前还是在后:equals isBefore isAfter
        System.out.println(ld5.equals(ld6));
        System.out.println(ld5.isAfter(ld));
        System.out.println(ld5.isBefore(ld));
    }
}

注意: LocalDateTime可以转换成LocalDate、LocalTime

/**
         *  LocalDateTime可以转换成LocalDate、LocalTime
         *  public localDate toLocalDate()
         *  public localTime toLocalTime()
         *  public static LocalDateTime of(LocalDate date, LocalTime time)
         */
        LocalDateTime ldt = LocalDateTime.now();
        LocalDate ld7 = ldt.toLocalDate();
        LocalTime lt = ldt.toLocalTime();
        LocalDateTime ldt1 = LocalDateTime.of(ld7, lt);

LocalDate的常用API(都是处理年、月、日、星期相关的

LocalTime的常用API(都是处理时、分、秒、纳秒相关的

LocalDateTime的常用API(可以处理年、月、日、星期、时、分、秒、纳秒等信息

时区

概念

 ZoneId时区的常见方法

示例 

package com.zz.TimeAdd.zoneId;

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Test {
    public static void main(String args[]){
        //1.ZoneId的常见用法,了解时区和带时区的时间
        //public static ZoneId systemDefault():获取系统默认的时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId.getId());

        //public static Set<String> getAvailableZoneIds():获取Java支持的全部时区Id
        System.out.println(ZoneId.getAvailableZoneIds());

        //public static ZoneId of(String zoneId):把某个时区id封装成ZoneId对象
        ZoneId zoneId1 = ZoneId.of("America/New_York");

        //2.ZonedDateTime:带时区的时间
        //public static ZonedDateTime now(ZoneId zone):获取某个时区的ZonedDateTime对象。
        ZonedDateTime now = ZonedDateTime.now(zoneId1);
        System.out.println(now);

        //世界标准时间
        ZonedDateTime now1 = ZonedDateTime.now(Clock.systemUTC());
        System.out.println(now1);

        //public static ZonedDateTime now():获取系统默认时区的ZonedDateTime对象
        ZonedDateTime now2 = ZonedDateTime.now();
        System.out.println(now2);
        }
}

Instant

  • 作用:用来记录代码的执行时间,或用于记录用户操作某个事件的时间点。
  • 传统的Date类,只能精确到毫秒,并且是可变独享;
  • 新增的Instant类,可以精确到纳秒,并且是不可变对象,推荐用Instant代替Date。

代码示例 

package com.zz.TimeAdd.Instant;

import java.time.Instant;

public class Test {
    public static void main(String args[]){
        //1.创建Instant的对象,获取此刻时间信息
        Instant now = Instant.now();

        //2.获取总秒数
        long second = now.getEpochSecond();
        System.out.println(second);

        //3.不够1的纳秒数
        int nano = now.getNano();
        System.out.println(nano);

        System.out.println(now);

        Instant instant = now.plusNanos(111);


        //Instant对象的作用,做代码的性能分析,记录用户的操作某个事件的时间点
        Instant now1 = Instant.now();
        //代码执行
        Instant now2 = Instant.now();
    }
}

 DataTimeFormat

代码示例 

package com.zz.TimeAdd.DateTimeFormat;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Test {
    public static void main(String args[]){
        //1.创建一个日期时间格式化器对象出来。
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

        //2.对时间进行格式化
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        String rs = formatter.format(now);//正向格式化
        System.out.println(rs);

        //格式化时间,其实还有一种方案
        String rs2 = now.format(formatter);//反向格式化
        System.out.println(rs2);

        //4.解析时间:解析时间一般是会用LocalDateTime提供的解析方法来解析
        String dateStr = "2029年12月12日 12:12:12";
        LocalDateTime ldt = LocalDateTime.parse(dateStr,formatter);
        System.out.println(ldt);
    }
}

Preiod(一段时期)

Duration(持续时间)

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值