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秒之间以毫秒为单位的时间差 称为时间戳

在这里插入图片描述

2.java.util.Date类

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

   Date date = new Date();
   System.out.println(date);

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

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

Date(long date)

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

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

在这里插入图片描述

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

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

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);
自定义日期格式

在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

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

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

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

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

set() 修改一些新的数据

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

add()添加

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

getTime()

        //方式一
        Calendar calendar = Calendar.getInstance();    
        Date time = calendar.getTime();
        System.out.println(time);

在这里插入图片描述

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);

在这里插入图片描述

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

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

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

在这里插入图片描述

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

minus() 减

Instant 瞬时

        Instant instant = Instant.now();
        System.out.println(instant);

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

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

获取对应的毫秒数

lonng m=instant.toEpochMilli();

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

 Instant instant1 = Instant.ofEpochMilli(9999999L);

DateTimeFormatter

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

        DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        LocalDateTime localDateTime = LocalDateTime.now();
        String format = formatter.format(localDateTime);//格式化
        TemporalAccessor parse = formatter.parse(format);//解析
        

2.本地化相关的格式

        DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);

在这里插入图片描述

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值