日期与时间(Java)

日期与时间(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 ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code袁

你的支持是我莫大的幸运

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值