• JAVA日期时间API


    JDK8之前的日期时间API

    1.java.lang.System类

    System类提供的public static long currentTimeMillis() 用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
    (此方法用于计算时间差)

    long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差 称为时间戳
    
    • 1

    在这里插入图片描述

    2.java.util.Date类

    Date() 使用无参构造器创建的对象可以获取本地当前时间

       Date date = new Date();
       System.out.println(date);
    
    • 1
    • 2

    相当于调用了 toString 方法
    在这里插入图片描述
    toString 方法 : 把时间戳变为日期格式

    getTime 方法: 获得当前Date对象对应的毫秒数(时间戳)

    Date(long date)

    3.java.sql.Date 对应着数据库中的日期类型的变量

            java.sql.Date date1 = new java.sql.Date(112231);
            System.out.println(date1);
    
    • 1
    • 2

    在这里插入图片描述

    如何将java.util.Date 对象 转换为 java.sql.Date 对象(父转子)

    Date date = new Date();
    java.sql.Date date1 =  new java.sql.Date(date.geTime());   //根据时间戳进行转换
    
    • 1
    • 2

    4.java.text.SimpleDateFormat 类

    对日期Date进行格式化和解析

    1.两个操作

    1. 格式化 : 日期–>字符串
      2)解析:格式化的逆过程,字符串—>日期
            SimpleDateFormat simpleDateFormat  = new SimpleDateFormat();
            //格式化日期
            Date date = new Date();
            System.out.println(date);
            String format = simpleDateFormat.format(date);//格式化
            System.out.println(format);
            //解析
            String str = format;
            Date parse = simpleDateFormat.parse(str);
            System.out.println(parse);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    自定义日期格式

    在这里插入图片描述

         SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
            String format1 = simpleDateFormat1.format(date);
            System.out.println(format1);
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    练习: 前端传来了个日期格式的字符串 如 “2020-09-08” 数据库中的日期字段位date型 ,将这个日期存放到数据库中

    String  birth = "2020-09-08";
    SimpleDateFormat sdf1  =new  SimpleDateFormat("yyyy-MM-dd"); //先定一个字和传来字符串格式一样的日期类型
    Date date  =sdf1.parse(birth);
    
    • 1
    • 2
    • 3

    5.java.util.Calendar(日历类)

    Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能
    获取Calendar实例的方法
    1)使用Calendar.getInstance()方法

            //方式一
            Calendar instance = Calendar.getInstance();
    
    • 1
    • 2

    2)调用它的子类GregorianCalendar的构造器

    常用方法
    get() 获取一些常用的数据

         Calendar calendar = Calendar.getInstance();
            int i = calendar.get(Calendar.DAY_OF_MONTH); //获取今天是这个月第几天
            System.out.println(i);
    
    • 1
    • 2
    • 3

    set() 修改一些新的数据

         Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DAY_OF_MONTH,20);  //修改今天位当前月的第四天
            System.out.println(i);
    
    • 1
    • 2
    • 3

    add()添加

         Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DAY_OF_MONTH,20);  //当前月的第几天加上20
            System.out.println(i);
    
    • 1
    • 2
    • 3

    getTime()

            //方式一
            Calendar calendar = Calendar.getInstance();    
            Date time = calendar.getTime();
            System.out.println(time);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    setTime()

    JDK8之后的时间日期API

    LocalDate LocalTime LocalDateTime(用的频率较高)

    now() 获取当前的日期 时间 日期 + 时间

           LocalDate localDate = LocalDate.now();
            LocalTime localTime = LocalTime.now();
            LocalDateTime localDateTime = LocalDateTime.now();
            System.out.println(localDate);
            System.out.println(localTime);
            System.out.println(localDateTime);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    of() 获取指定日期的年月日

            LocalDateTime localDateTime1 = LocalDateTime.of(2022, 8, 15, 6, 23, 14);
            System.out.println(localDateTime1);
    
    • 1
    • 2

    在这里插入图片描述
    get() 可以获得很多信息

    在这里插入图片描述

    with() 将月份天数 年份天数 月份 年份 修改为指定的值并返回新的对象 原本的并不会改变 提现不可变性

    minus() 减

    Instant 瞬时

            Instant instant = Instant.now();
            System.out.println(instant);
    
    • 1
    • 2

    这时创建出来的时间是本初子午线所在的时区这时就要使用偏移

     OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
    
    • 1

    获取对应的毫秒数

    lonng m=instant.toEpochMilli();
    
    • 1

    通过给定的毫秒数,获取Instant实例

     Instant instant1 = Instant.ofEpochMilli(9999999L);
    
    • 1

    DateTimeFormatter

    实例化的三种方式
    1.预定义的标准格式

            DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
            LocalDateTime localDateTime = LocalDateTime.now();
            String format = formatter.format(localDateTime);//格式化
            TemporalAccessor parse = formatter.parse(format);//解析
            
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.本地化相关的格式

            DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
    
    
    • 1
    • 2

    在这里插入图片描述

    3.自定义的格式(重点)

     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
     formatter..format(localDateTime)//格式化
    
    • 1
    • 2

    解析只要传入你自定义的类型即可

  • 相关阅读:
    mysql添加字段和调整字段顺序(图文详解)
    基于Python+Django的开药系统【源码+LW+PPT+部署讲解】
    Modbus RTU(Remote Terminal Unit)与RS-485协议介绍(主站设备(Master)、从站设备(Slave))
    gopacket源码分析
    【ELK】日志分析系统概述及部署(ELFK部署实验)
    Blender程序化设置材质【Python】
    nodejs+vue+elementui素食主义宣传网站
    【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
    PHP生成带中文的图片
    java多线程-多线程技能
  • 原文地址:https://blog.csdn.net/weixin_46427348/article/details/126686534