zoukankan      html  css  js  c++  java
  • 【JDK8】Java8 LocalDate操作时间和日期的API

      时间项目中的涉及到的时间处理非常多,犹豫SimpleDateFormat的不安全性以及Calendar等类在计算时比较复杂,

    往往我们都会使用工具类来封装较多的日期处理函数,

      但是JDK8中新增了操作和日期和时间API,添加了很多常见的api,例如日期/时间比较,加减,格式化等等 方便我们操作时间和日期;

      包所在的位置:java.time

    以下是常用的API

      1.LocalDate:日期

      2.LocalTime:时间

      3.LocalDateTime:日期和时间

      4.DateTimeFormater 格式化类

    1.以LocalDate为例,代码说明一下具体的API的用法

    LocalDate today = LocalDate.now();
    System.out.println("今天日期:" + today);
    //获取年年,月,日,周几
    System.out.println("现在是哪年年:"+today.getYear());
    System.out.println("现在是哪⽉月:"+today.getMonth());
    System.out.println("现在是哪⽉月(数字):"+today.getMonthValue());
    System.out.println("现在是⼏几号:"+today.getDayOfMonth());
    System.out.println("现在是周⼏几:"+today.getDayOfWeek());
    //加减年年份, 加后返回的对象才是修改后的, 旧的依旧是旧的
    LocalDate changeDate = today.plusYears(1);
    System.out.println("加后是哪年年:"+changeDate.getYear());
    System.out.println("旧的是哪年年:"+today.getYear());
    //日期比较
    System.out.println("isAfter: "+changeDate.isAfter(today));
    //getYear() int 获取当前日期的年年份
    //getMonth() Month 获取当前日期的月份对象
    //getMonthValue() int 获取当前日期是第几月
    //getDayOfWeek() DayOfWeek 表示该对象表示的⽇日期是星期几
    //getDayOfMonth() int 表示该对象表示的日期是这个月第几天
    //getDayOfYear() int 表示该对象表示的日期是今年年第几天
    //withYear(int year) LocalDate 修改当前对象的年年份
    //withMonth(int month) LocalDate 修改当前对象的月份
    //withDayOfMonth(int dayOfMonth) LocalDate 修改当前对象在当月的日期//plusYears(long yearsToAdd) LocalDate 当前对象增加指定的年年份数
    //plusMonths(long monthsToAdd) LocalDate 当前对象增加指定的月份数
    //plusWeeks(long weeksToAdd) LocalDate 当前对象增加指定的周数
    //plusDays(long daysToAdd) LocalDate 当前对象增加指定的天数
    //minusYears(long yearsToSubtract) LocalDate 当前对象减去指定的年的年数//minusMonths(long monthsToSubtract) LocalDate 当前对象减去注定的月数//minusWeeks(long weeksToSubtract) LocalDate 当前对象减去指定的周数//minusDays(long daysToSubtract) LocalDate 当前对象减去指定的天数
    //compareTo(ChronoLocalDate other) int 比较当前对象和other对象在时间上的大小,返回值如果为正,则当前时间较晚//isBefore(ChronoLocalDate other) boolean 比较当前对象日期是否在other对象之前//isAfter(ChronoLocalDate other) boolean 比较当前对象日期是否在other对象之后//isEqual(ChronoLocalDate other) boolean 比较两个日期对象是否相等

    2.日期时间格式化

      JDK8之前:SimpleDateFormat来进行格式化,但SimpleDateFormat并不不是线程安全的

        JDK8之后:引入线程安全的日期与时间DateTimeFormatter

    LocalDateTime ldt = LocalDateTime.now();
    System.out.println(ldt);
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String ldtStr = dtf.format(ldt);
    System.out.println(ldtStr);

    3.获取指定的日期时间对象

    LocalDateTime ldt = LocalDateTime.of(2020, 11, 11, 8, 20, 30);
    System.out.println(ldt);

    4.计算日期时间差java.time.Duration

    LocalDateTime today = LocalDateTime.now();
    System.out.println(today);
    LocalDateTime changeDate = LocalDateTime.of(2020,10,1,10,40,30);
    System.out.println(changeDate);
    Duration duration = Duration.between( today,changeDate);//第二个参数减第一个参数
    System.out.println(duration.toDays());//两个时间差的天数
    System.out.println(duration.toHours());//两个时间差的小时数
    System.out.println(duration.toMinutes());//两个时间差的分钟数
    System.out.println(duration.toMillis());//两个时间差的毫秒数
    System.out.println(duration.toNanos());//两个时间差的纳秒数
  • 相关阅读:
    485串口接线
    mvc3 升级mvc5
    VB连接ACCESS数据库,使用 LIKE 通配符问题
    VB6 读写西门子PLC
    可用的 .net core 支持 RSA 私钥加密工具类
    解决 Win7 远程桌面 已停止工作的问题
    解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题
    解决安装 .net framework 发生 extracting files error 问题
    CentOS7 安装配置笔记
    通过特殊处理 Resize 事件解决 WinForm 加载时闪烁问题的一个方法
  • 原文地址:https://www.cnblogs.com/july-sunny/p/11684516.html
Copyright © 2011-2022 走看看