文章目录
- 日期与时间(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,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 ✨支持一下哦!手动码字,如有错误,欢迎在评论区指正💬~
你的支持就是我更新的最大动力💪~