java Calendar、LocalDateTime、LocalDate日期加减

发布时间 2023-11-25 09:08:19作者: 伊利同学
Calendar日期获取,设置,加减 创建一个日历对象 获取当前年份,月份,日期等..... 设置指定年份,月份,日期等..... Calendar calendar=Calendar.getInstance();//创建一个日历对象 int year=calendar.get(calendar.YEAR);//获取当前年份 System.out.println("获取当前年份:"+year); int month=calendar.get(calendar.MONTH)+1;//获取月份 System.out.println("获取月份:"+month); int date=calendar.get(calendar.DATE);//获取日期 System.out.println("获取日期:"+date); int huor=calendar.get(calendar.HOUR);//获取时 System.out.println("获取时:"+huor); int hous=calendar.get(calendar.HOUR_OF_DAY);//获取时的24小时制 System.out.println("获取时的24小时制:"+hous); //将给定的日历字段设置为给定的值 calendar.set(calendar.YEAR,2034);//设置指定年份 int year2=calendar.get(calendar.YEAR);//获取设置指定年份 System.out.println("获取设置指定年份:"+year2); calendar.set(calendar.MONTH,5);//设置指定月份 int month2=calendar.get(calendar.MONTH);//获取设置的指定月份 System.out.println("获取设置的指定月份:"+month2); calendar.set(calendar.DATE,5);//设置指定日子 int date2=calendar.get(calendar.DATE);//获取指定日 System.out.println("获取指定日:"+date2); Calendar年份增加两年 Calendar月份减少三月 // 根据日历规则,为给定的日历字段添加或者减去指定的事件量 calendar.add(calendar.YEAR,2);//把年份增加两年 calendar.add(calendar.MONTH,-3);//把月份减少三年 int yuer=calendar.get(calendar.YEAR); int month3=calendar.get(calendar.MONTH); System.out.println(yuer+"年"+month3+"月"+date+"日"); LocalDateTime日期获取,设置,加减 LocalDate只能设置仅含年月日的格式 LocalTime只能设置仅含时分秒的格式 LocalDateTime可以设置含年月日时分秒的格式 LocalDateTime lo=LocalDateTime.now();// 创建一个表示当前日期和时间的对象 System.out.println("当前日期时间:"+lo); LocalDate loc=LocalDate.now();//获取当前日期 System.out.println("获取当前日期:"+loc); LocalTime ltim=LocalTime.now();//获取当前时间 System.out.println("获取当前时间:"+ltim); LocalDate lo2=LocalDate.of(2016,2,3);//指定日期 System.out.println(":指定日期:"+lo2); LocalTime yim=LocalTime.of(7,33,20);//指定时间 System.out.println("指定时间:"+yim); LocalDateTime lotime=LocalDateTime.of(2015,3,22,11,43,34); System.out.println("指定日期时间:"+lotime); LocalDateTime日期时间的加减 // LocalDateTime日期时间的加减 LocalDateTime lotim=LocalDateTime.now();//获取当前日期 LocalDateTime plusYesar=lotim.plusYears(2L);//年份加2 LocalDateTime plusMonth=lotim.plusMonths(3L);//月份加3 LocalDateTime plusDays=lotim.plusDays(7L);//日+7 LocalDateTime plusHour=lotim.plusHours(4L);//小时+4 LocalDateTime plusMIn=lotim.plusMinutes(10);//分钟+10 LocalDateTime plusScon=lotim.plusSeconds(10L);//秒+10 System.out.println("\n\n当前时间:"+lotim); System.out.println("当前时间+2年后的时间是:"+plusYesar); System.out.println("当前月份+3:"+plusMonth); System.out.println("当前时间日+7:"+plusDays); System.out.println("当前时间小时+4:"+plusHour); System.out.println("当前时间分钟+10:"+plusMIn); System.out.println("当前时间秒+10:"+plusScon); 当前时间基础上,指定本年当中的第几天 LocalDate loDate=LocalDate.now();//获取当前时间 //当前时间基础上,指定本年当中的第几天 LocalDate with=loDate.withDayOfYear(200);//获取当前年份的第200天 LocalDate moth=loDate.withDayOfMonth(5);//获取当前月份的第几天 LocalDate year=loDate.withYear(2025);//指定年份 LocalDate mon=loDate.withMonth(3);//指定月份 System.out.println("\n\n当前时间:"+loDate); System.out.println("指定当前年份的第200天:"+with); System.out.println("当前月份的第5天:"+moth); System.out.println("指定年份:"+year); System.out.println("指定月份:"+mon); 获取日期的年月日周时分秒 // 获取日期的年月日周时分秒 LocalDateTime lodatm=LocalDateTime.now(); int dayYear=lodatm.getDayOfYear(); int dayMonth=lodatm.getDayOfMonth(); DayOfWeek dayofweek=lodatm.getDayOfWeek(); System.out.println("\n\n今天是:"+lodatm+"\n" + "本年当中的第"+dayYear+"天\n" + "本月当中的第"+dayMonth+"天\n" + "本周中的星期"+dayofweek.getValue()+"及"+dayofweek+"\n"); //获取当天时间的年月日时分秒 int year2=lodatm.getYear(); Month month2=lodatm.getMonth(); int day=lodatm.getDayOfMonth(); int hour=lodatm.getHour(); int minute=lodatm.getMinute(); int secound=lodatm.getSecond(); System.out.println("\n\n今天是:"+lodatm+"\n年:"+year2+"\n月:"+month2.getValue()+"\n" + "日:"+day+"\n时:"+hour+"\n分:"+minute+"\n秒:"+secound); 时间日期前后的比较与判断 // 时间日期前后的比较与判断 LocalDate loda1=LocalDate.of(2017,7,7); LocalDate loda2=LocalDate.of(2019,9,9); boolean dateisb=loda1.isBefore(loda2); System.out.println("\n\n 时间日期前后的比较与判断:"+dateisb); 计算时间、日期间隔 Duration:用于计算两个“时间”间隔 Period:用于计算两个“日期”间隔 计算俩个日期的间隔-年月日 LocalDate date1=LocalDate.of(2018,3,3); LocalDate date2=LocalDate.of(2023,6,6); Period per=Period.between(date1,date2); System.out.println("相差年数:"+per.getYears()); System.out.println("相差月份:"+per.getMonths()); System.out.println("相差日数:"+per.getDays()); System.out.println("\n==================================="); long years=per.get(ChronoUnit.YEARS); long month=per.get(ChronoUnit.MONTHS); long days=per.get(ChronoUnit.DAYS); System.out.println("相差的年月日分别为:"+years+"-"+month+"-"+days); 获取时间间隔,并不是单词的年月日数字的加减,而是计算出具体相差多少天 计算俩个时间的间隔 System.out.println("\n\n======================="); LocalDateTime da1=LocalDateTime.now(); LocalDateTime da2=LocalDateTime.of(2022,2,2,22,30,10); Duration du=Duration.between(da1,da2); System.out.println(da1+"和"+da2+"间隔\n"+du.toDays()+"天"+du.toHours()+"小时"+du.toMinutes()+"分钟" + du.toMillis()+"毫秒"+du.toNanos()+"纳秒"); 类型转换时间戳 将Instant对象转换为时间戳 将LocalDateTime对象转换为时间戳 将Date对象转换为时间戳 使用Calendar将日期转换为时间戳(两种方法) Instant ins=Instant.now(); System.out.println("\n\n当前时间:"+ins);//2023-11-17T03:11:11.336552200Z // 将Instant对象转换为时间戳 long insTime=Instant.now().toEpochMilli(); System.out.println("Instant时间戳:"+insTime); Date date=Date.from(ins); Instant instant=date.toInstant(); System.out.println(instant); //将LocalDateTime对象转换为时间戳 long loTime=lo.toInstant(ZoneOffset.of("+8")).toEpochMilli(); System.out.println("LocalDateTime时间戳:"+loTime); //将Date对象转换为时间戳 Date date4=new Date(); long dateTime=date4.getTime(); System.out.println("Date时间戳:"+dateTime); long calTime=calendar.getTimeInMillis();//第一种方法 System.out.println("Calendar时间戳1:"+calTime); System.out.println("Calendar时间戳2:"+calendar.getTime().getTime());//第二种方法 自定义转化 自定义格式 自定义转化的格式一定要与日期类型对应 LocalDate只能设置仅含年月日的格式 LocalTime只能设置仅含时分秒的格式 LocalDateTime可以设置含年月日时分秒的格式 LocalDateTime date=LocalDateTime.now(); DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日"); String dateStr=formatter.format(date); System.out.println(dateStr);//2023年11月17日 DateTimeFormatter formatter1=DateTimeFormatter.ofPattern("yyyy-MM-dd"); System.out.println(formatter1.format(LocalDate.now()));//2023-11-17 DateTimeFormatter formatter2=DateTimeFormatter.ofPattern("HH:mm:ss");//时分秒 System.out.println(formatter2.format(LocalTime.now()));//16:49:48 将时间字符串形式转化为日期对象 格式的写法必须与字符串的形式一样 String datetim="2023-11-12 12:32:20"; DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime ldt=LocalDateTime.parse(datetim,dtf); System.out.println(ldt); ———————————————— 版权声明:本文为CSDN博主「天降伊利大王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/liyil66464/article/details/134605969