java基础之日期时间类

一.获取日期时间(java8以前)

1.基础知识
1秒=1000毫秒
毫秒值的作用:计算2001,01,03-2007,08,11一个有多少天
获取毫秒值(获取当前时间到1970,1,1,00:00的毫秒值)

 public static void main(String [] args)
    {
        System.out.println(System.currentTimeMillis());//获取毫秒值
    }

2.java.util.Date包下Date类
常用方法:

  Date data1=new Date();//返回当前日期时间
        Date date2=new Date(0l);//参数是毫秒值,跟毫秒值得到日期
        long time =data1.getTime();//根据日期得到毫秒值

二.日期时间格式化

new Date () 格式通常不是我们想要的
1.java.text.DateFormat包下DateFormat类
DateFormat类是日期时间格式化子类的抽象类继承Format
子类:SimpleDateFormat类
作用:格式化(Date->String),解析(String->Date)

   SimpleDateFormat sdf=new SimpleDateFormat("yyyy年mm月dd日  hh时mm分ss秒");
        Date date1=new Date();
        //格式化
        String date2=sdf.format(date1);
        //解析
        Date d2=sdf.parse("2022年02月17日  08时02分30秒");//parse()方法会抛出parseException异常(参数格式和创建SimpleDateFormat格式不一样则抛出此异常

日历类

Java.util.Calendar包下Calendar类
Calendar类是抽象类

  Calendar c= Calendar.getInstance();//Calendar是抽象类,不能直接创建,(多态原理)
        int year =c.get(Calendar.YEAR);//获取日历字段具体值
        c.set(Calendar.MONTH,1);//设置单个日历字段值
        c.set(2001,10,1);//同时设置年月日
        c.add(Calendar.DATE,8);//增加或减少字段值(正数增加,负数减少)
        Date date1=c.getTime();//转换成Date对象


以上都是java8之前的类,Java8之后提供了新的类:LocalTime,LocalDateTime,LocaDate,位于java.time包下
注意SimpleDateFormat是线程不安全的,java8新增的3个类是线程安全的

日期类
java.time包下

Java8的日期时间类

已经有了Date包为什们还要使用java8time包呢?

  • java.util.Datejava.util.Calend类是线程不安全的,在实际开发过程中可能会需要保证这个日期是线程安全的
  • java.time包是线程安全的,不需要对日期时间做额外的操作
  • 老版本的日期时间类对时间的计算是比较复杂的,例如:现在据某个日期(1995年12月5号)过了多少天
    老板版代码
//获取当前时间
Date date=new Date();
//当前时间据1970年1月1日过了多少毫秒
long s=date.getTime();
//1995年12月5号据1970年1月1日过了多少毫秒
Calendar c=Calendar.getInstance();
c.set(1995,12,5);
Date rdate=c.getTime();
long s2=rdate.getTime();
//s-s2然后将结果从毫秒换算成天
(s-s2)/1000/60/60/24;

新版本代码

long dav=ChronoUnit.DAYS.between(LocalDate.of(),LocalDate.now());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java提供了许多用于处理日期时间的类和方法。其中最常用的是: 1. Date类:表示日期时间的类。现在已经被废弃,不建议使用。 2. Calendar类:是一个抽象类,提供了处理日期时间的方法。 3. SimpleDateFormat类:可以将日期时间格式化成指定的字符串。 4. LocalDateTime类:Java 8引入的新类,用于表示日期时间,提供了许多方便的方法。 5. Duration类和Period类:用于表示时间间隔。 下面是一些示例代码: 1. 获取当前日期时间 ```java Date date = new Date(); System.out.println(date); LocalDateTime now = LocalDateTime.now(); System.out.println(now); ``` 2. 格式化日期时间 ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = sdf.format(date); System.out.println(formattedDate); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedNow = now.format(formatter); System.out.println(formattedNow); ``` 3. 计算时间间隔 ```java LocalDateTime start = LocalDateTime.of(2021, 1, 1, 0, 0, 0); LocalDateTime end = LocalDateTime.now(); Duration duration = Duration.between(start, end); System.out.println(duration.toDays()); LocalDate startDate = LocalDate.of(2021, 1, 1); LocalDate endDate = LocalDate.now(); Period period = Period.between(startDate, endDate); System.out.println(period.getYears()); ``` 这里只是简单介绍了一些Java处理日期时间基础知识,具体的使用方法还需要根据实际需求进行学习和掌握。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值