一文搞懂Java的时间与日期

简介: 本文是关于Java中日期和时间的处理,介绍了JDK8之前和之后的不同方法。在JDK8之前,使用`Date`、`SimpleDateFormat`和`Calendar`类,示例包括创建日期、格式化时间、解析字符串以及修改日期。JDK8引入了`LocalDate`、`LocalTime`、`LocalDateTime`、`ZoneId`、`ZonedDateTime`、`Instant`和`DateTimeFormatter`等新类,提供了更丰富的日期和时间操作,如获取时区时间、格式化与解析、计算日期间隔等。文章结尾鼓励读者点赞和支持。

@[toc]

日期与时间(Java)

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
在这里插入图片描述
💥个人主页code袁
💥 所属专栏Java

一、JDK8之前的

1.1 Date

Date 代表获取当前此时此刻的时间

1.构建日期对象

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

结果

Fri Mar 15 23:37:24 GMT+08:00 2024

2.获取毫秒值

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

结果

1710517044440

3.毫秒值转化为时间

   long time=date.getTime();
    Date d2=new Date(time);
    System.out.println(d2);

1.2 SimpleDateFormat

格式化、解析时间的
注意: 解析时间的格式必须与被解析时间的格式一模一样,否则报错!

1.日期的格式化

   Date date=new Date();
   SimpleDateFormat sf= new SimpleDateFormat("YYYY-MM-dd HH:mm:ss EEE a");
   System.out.println(sf.format(date));

结果

2024-03-15 23:37:24 星期五 下午

2.字符串时间解析成日期对象

  String start="2023年11月11日 0:0:0";
  SimpleDateFormat spf= new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
  Date startDt= spf.parse(start);

结果

Sat Nov 11 00:00:00 GMT+08:00 2023

1.3 Calendar

代表日历,获取信息更丰富

1.日历对象

 Calendar now=Calendar.getInstance();
 System.out.println(now);

结果

ava.util.GregorianCalendar[time=1710517971008,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=2,WEEK_OF_YEAR=11,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=75,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=52,SECOND=51,MILLISECOND=8,ZONE_OFFSET=28800000,DST_OFFSET=0]

2.获得日期

 Calendar now=Calendar.getInstance();
 System.out.println(now.getTime());

3.获得毫秒值

Calendar now=Calendar.getInstance();
 System.out.println(now.getTimeInMillis());

4.修改日期

Calendar now=Calendar.getInstance();
now.add(Calendar.DAY_OF_YEAR,100); 
System.out.println(now.get(Calendar.MONTH));

二、 JDK8之后的

2.1 LocalDate、LocalTime和LocalDateTime

LocalDate、LocalTime和LocalDateTime在语法上基本一致。
LocalDate获取年 月 日
LocalTime获取时 分 秒 纳秒
LocalDateTime获取年 月 日 时 分 秒 纳秒

1.获取本地日期对象

  LocalDate ld=LocalDate.now();

  System.out.println(ld);

2.获取具体的

        int year=ld.getYear();
        int month=ld.getMonthValue();
        int day=ld.getDayOfYear();
        //一年中第几天
        int dayOfYear=ld.getDayOfYear();
        //星期几
        int dayOfWeek=ld.getDayOfWeek().getValue();
        System.out.println(dayOfYear+"-----"+dayOfWeek);
2024-03-16
76-----6

3.基本操作

//修改 withYear withMonth,withDyofMonth
        LocalDate d2= ld.withYear(2028);  //修改的值在d2中
        System.out.println(d2.getYear());

        //加 plusYears plusMonth
        LocalDate d3=ld.plusYears(2);
        System.out.println(d3);

        //减 minusYears
        LocalDate d4=ld.minusYears(4);
        System.out.println(d4);

        //获取指定日期
        LocalDate d5=LocalDate.of(2035,05,12);
        System.out.println(d5);

        //判断日期对象
        System.out.println(d5.equals(d4));  //判断是否相等
        System.out.println(d5.isAfter(d4)); //判断是否在后
        System.out.println(d5.isBefore(d4)); //判断是否在前

2.2 ZoneId和ZonedDateTime

ZonedDateTime获取时区的时间
ZoneId 获取时区

 //zoneId 时区
        ZoneId zoneId= ZoneId.systemDefault();
        System.out.println(zoneId.getId());


        //带时区的时间
        ZonedDateTime now=ZonedDateTime.now();
        System.out.println(now);

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

        //系统默认时间
        ZonedDateTime now2=ZonedDateTime.now();
        System.out.println(now2);

        System.out.println(now2.getYear());

2.3 Instant

//创建Instant对象 不可变对象
        Instant It=Instant.now();
        System.out.println(It);

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

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

2.4 DateTimeFormatter

对日期进行格式化

      //日期格式化
        DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy年mm月dd日 HH:mm:ss");

        LocalDateTime ldt5=LocalDateTime.now();

        System.out.println(dtf.format(ldt5));

        //解析时间
        String date ="2024年14月17日 00:14:17";
        LocalDateTime ldt6=LocalDateTime.parse(date,dtf);
        System.out.println(ldt6);

2.4 Period和 Duration

Period计算两个日期间隔的年数,月数,天数
Duration计算两个日期间隔的时,分,秒

  //日期间隔
        LocalDate start=LocalDate.of(2028,05,23);
        LocalDate end=LocalDate.of(2024,11,20);

       //创建period对象
        Period period=Period.between(end,start);


        System.out.println(period.getYears());
        System.out.println(period.getMonths());
        System.out.println(period.getDays());

        LocalDateTime t1=LocalDateTime.of(2028,05,23,11,11,11);
        LocalDateTime t2=LocalDateTime.of(2024,11,20,12,12,13);
        //获取间隔时 分 秒
        Duration duration=Duration.between(t2,t1);

        //间隔对象间隔信息
        System.out.println(duration.toDays());
        System.out.println(duration.toHours());
        System.out.println(duration.toMinutes());
        System.out.println(duration.toMillis());

🎉写在最后

🍻伙伴们,如果你已经看到了这里,觉得这篇文章有帮助到你的话不妨点赞👍或 Star ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

你的支持就是我更新的最大动力💪~

目录
相关文章
|
1月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
35 0
|
1月前
|
存储 Java 程序员
Java 日期时间
4月更文挑战第17天
|
1月前
|
Java
java中日期处理的一些工具方法
java中日期处理的一些工具方法
25 1
|
7天前
|
安全 Java 程序员
Java8实战-新的日期和时间API
Java8实战-新的日期和时间API
18 3
|
20天前
|
安全 Java Unix
Java语言中的日期与时间处理技术
Java语言中的日期与时间处理技术
|
7天前
|
Java
Java日期时间DateUtils工具包
Java日期时间DateUtils工具包
10 1
|
14天前
|
Java 测试技术 API
滚雪球学Java(52):一步一步教你使用Java Calendar类进行日期计算
【6月更文挑战第6天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
15 3
滚雪球学Java(52):一步一步教你使用Java Calendar类进行日期计算
|
15天前
|
安全 Java 测试技术
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
22 0
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
|
1月前
|
Java API
Java一分钟之-Java日期与时间API:LocalDate, LocalDateTime
【5月更文挑战第13天】Java 8引入`java.time`包,改进日期时间API。`LocalDate`代表日期,`LocalDateTime`包含日期和时间。本文概述两者的基本用法、常见问题及解决策略。创建日期时间使用`of()`和`parse()`,操作日期时间有`plusDays()`、`minusMonths()`等。注意点包括:设置正确的`DateTimeFormatter`,考虑闰年影响,以及在需要时区信息时使用`ZonedDateTime`。正确使用这些类能提升代码质量。
28 3
|
1月前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型