文章目录
- 日期与时间(Java)
- 一、JDK8之前的
- 1.1 Date
- 1.2 SimpleDateFormat
- 1.3 Calendar
- 二、 JDK8之后的
- 2.1 LocalDate、LocalTime和LocalDateTime
- 2.2 ZoneId和ZonedDateTime
- 2.3 Instant
- 2.4 DateTimeFormatter
- 2.4 Period和 Duration
- 🎉写在最后
日期与时间(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,withDyofMonthLocalDate d2= ld.withYear(2028); //修改的值在d2中System.out.println(d2.getYear());//加 plusYears plusMonthLocalDate d3=ld.plusYears(2);System.out.println(d3);//减 minusYearsLocalDate 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 ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~
你的支持就是我更新的最大动力💪~