java8日期 左手的ㄟ右手 2022-07-12 02:48 178阅读 0赞 Java 8中有一个叫LocalDate的类,它能用来表示今天的日期 LocalDate today = LocalDate.now(); int year = today.getYear(); int month = today.getMonthValue(); int day = today.getDayOfMonth(); 获取某个特定的日期 LocalDate dateOfBirth = LocalDate.of(2010, 01, 14); 检查两个日期是否相等 LocalDate date1 = LocalDate.of(2014, 01, 14); if(date1.equals(today)){ } 检查重复事件,比如说生日 MonthDay表示的是某个重复出现的日子 LocalDate dateOfBirth = LocalDate.of(2010, 01, 14); MonthDay birthday = MonthDay.of(dateOfBirth.getMonth(), dateOfBirth.getDayOfMonth()); MonthDay currentMonthDay = MonthDay.from(today); if(currentMonthDay.equals(birthday)){ System.out.println("birthday!!"); }else{ System.out.println("not birthday!!"); } 获取当前时间 LocalTime time = LocalTime.now(); 增加时间里面的小时数 LocalTime time = LocalTime.now(); LocalTime newTime = time.plusHours(2); 获取1周后的日期 LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS); 一年前后的日期 LocalDate previousYear = today.minus(1, ChronoUnit.YEARS); System.out.println("Date before 1 year : " + previousYear); LocalDate nextYear = today.plus(1, YEARS); System.out.println("Date after 1 year : " + nextYear); 判断某个日期是在另一个日期的前面还是后面 LocalDate tomorrow = LocalDate.of(2014, 1, 15); 、if(tommorow.isAfter(today)){ System.out.println("Tomorrow comes after today"); } LocalDate yesterday = today.minus(1, DAYS); if(yesterday.isBefore(today)){ } 处理不同的时区 LocalDateTime localtDateAndTime = LocalDateTime.now(); ZonedDateTime dateAndTimeInNewYork = ZonedDateTime.of(localtDateAndTime, america ); 表示固定的日期,比如信用卡过期时间 YearMonth又是另一个组合,它代表的是像信用卡还款日,定期存款到期日,options到期日这类的日期 YearMonth currentYearMonth = YearMonth.now(); System.out.printf("Days in month year %s: %d%n", currentYearMonth, currentYearMonth.lengthOfMonth()); YearMonth creditCardExpiry = YearMonth.of(2018, Month.FEBRUARY); System.out.printf("Your credit card expires on %s %n", creditCardExpiry); 检查闰年 if(today.isLeapYear()) 两个日期之间包含多少天,多少个月 LocalDate java8Release = LocalDate.of(2014, Month.MARCH, 14); Period periodToNextJavaRelease =Period.between(today, java8Release); System.out.println("Months left between today and Java 8 release : " + periodToNextJavaRelease.getMonths() ); 如何获取当前时间戳 Instant timestamp = Instant.now(); 使用预定义的格式器来对日期进行解析/格式化 String dayAfterTommorrow = "20140116"; LocalDate formatted = LocalDate.parse(dayAfterTommorrow,DateTimeFormatter.BASIC_ISO_DATE); 自定义的格式器来解析日期 String goodFriday = "Apr 18 2014"; try { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd yyyy"); LocalDate holiday = LocalDate.parse(goodFriday, formatter); System.out.printf("Successfully parsed String %s, date is %s%n", goodFriday, holiday); } catch (DateTimeParseException ex) { System.out.printf("%s is not parsable!%n", goodFriday); ex.printStackTrace(); } 对日期进行格式化,转换成字符串 LocalDateTime arrivalDate = LocalDateTime.now(); try{ DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM dd yyyy hh:mm a"); String landing = arrivalDate.format(format); System.out.printf("Arriving at : %s %n", landing); } catch (DateTimeException ex) { System.out.printf("%s can't be formatted!%n", arrivalDate); ex.printStackTrace(); } Date转localDate Date date=new Date(); LocalDate localDate=LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate(); localDate转Date LocalDate localDate=LocalDate.now(); Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); localDateTime转Date Date start=Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()); 获取本月月初(带时分秒) LocalDateTime startTime=LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()),LocalTime.MIN); 获取本月月末(带时分秒) LocalDateTime endTime=LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()),LocalTime.MAX); 只获取本月月初和月末日期(不带时分秒 ) LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()) LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()) 获取两个日期之间的日期 ChronoUnit.DAYS.between(LocalDate.now(),LocalDate.of(2017,8,20)); LocalDate nowDate=LocalDate.now(); LocalDate create=LocalDate.of(2017,7,10); Long daysBetween=nowDate.toEpochDay()-create.toEpochDay()+1; string转LocalDateLocalDate date=LocalDate.parse("20170713",DateTimeFormatter.ofPattern("yyyy-MM-dd"));DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//时间转为字符串LocalDateTime date =LocalDateTime.now(); String str = date.format(f); // 2014-11-07 14:10:36 //字符串转为时间 date = LocalDateTime.parse(str,f); 1.获取本周第一天 LocalDate nowDate = LocalDate.now(); LocalDate first = nowDate.with(DayOfWeek.MONDAY); LocalDateTime start = LocalDateTime.of(nowDate.with(DayOfWeek.MONDAY),LocalTime.MIN);
还没有评论,来说两句吧...