Java8 LocalDateTime常用方法

mac2025-05-18  26

Java8 LocalDateTime常用方法

1.获取当前时间2.获取秒,毫秒3.和String互转4.和Date互转5.常用方法

1.获取当前时间

LocalDateTime.now()

2.获取秒,毫秒

//获取秒数 Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); //获取毫秒数 Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

3.和String互转

//时间转字符串格式化 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String dateTime = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter); //字符串转时间 String dateTimeStr = "2019-11-01 11:11:11"; DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);

4.和Date互转

//将java.util.Date 转换为java8 的java.time.LocalDateTime,默认时区为东8区 public static LocalDateTime dateConvertToLocalDateTime(Date date) { return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime(); } //将java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东8区 public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) { return Date.from(localDateTime.toInstant(ZoneOffset.of("+8"))); }

5.常用方法

LocalDate : 只含年月日的日期对象 LocalTime :只含时分秒的时间对象 LocalDateTime : 同时含有年月日时分秒的日期对象 //指定日期创建 LocalDateTime localDateTime = LocalDateTime.of(2018, 1, 13, 9, 43, 20); //日期时间的加减 //以下方法的参数都是long型,返回值都是LocalDateTime LocalDateTime plusYearsResult = localDateTime.plusYears(2L); LocalDateTime plusMonthsResult = localDateTime.plusMonths(3L); LocalDateTime plusDaysResult = localDateTime.plusDays(7L); LocalDateTime plusHoursResult = localDateTime.plusHours(2L); LocalDateTime plusMinutesResult = localDateTime.plusMinutes(10L); LocalDateTime plusSecondsResult = localDateTime.plusSeconds(10L); //当前时间基础上,指定本年当中的第几天,取值范围为1-365,366 LocalDate withDayOfYearResult = localDate.withDayOfYear(200); //当前时间基础上,指定本月当中的第几天,取值范围为1-29,30,31 LocalDate withDayOfMonthResult = localDate.withDayOfMonth(5); //当前时间基础上,直接指定年份 LocalDate withYearResult = localDate.withYear(2017); //当前时间基础上,直接指定月份 LocalDate withMonthResult = localDate.withMonth(5); //获取当天时间的年月日时分秒 int year = localDateTime.getYear(); Month month = localDateTime.getMonth(); int day = localDateTime.getDayOfMonth(); int hour = localDateTime.getHour(); int minute = localDateTime.getMinute(); int second = localDateTime.getSecond(); //判断两个时间点的前后 LocalDate localDate1 = LocalDate.of(2017, 8, 8); LocalDate localDate2 = LocalDate.of(2018, 8, 8); boolean date1IsBeforeDate2 = localDate1.isBefore(localDate2); //返回当前时间,根据系统时间和UTC Clock clock = Clock.systemUTC(); //计算两个日期的日期间隔-年月日 LocalDate date1 = LocalDate.of(2018, 2, 13); LocalDate date2 = LocalDate.of(2017, 3, 12); //内部是用date2-date1,所以得到的结果是负数 Period period = Period.between(date1, date2); System.out.println("相差年数 : " + period.getYears()); System.out.println("相差月数 : " + period.getMonths()); System.out.println("相差日数 : " + period.getDays()); //还可以这样获取相差的年月日 System.out.println("-------------------------------"); long years = period.get(ChronoUnit.YEARS); long months = period.get(ChronoUnit.MONTHS); long days = period.get(ChronoUnit.DAYS); System.out.println("相差的年月日分别为 : " + years + "," + months + "," + days); //注意,当获取两个日期的间隔时,并不是单纯的年月日对应的数字相加减,而是会先算出具体差多少天,在折算成相差几年几月几日的 //计算两个时间的间隔 System.out.println("-------------------------------"); LocalDateTime date3 = LocalDateTime.now(); LocalDateTime date4 = LocalDateTime.of(2018, 1, 13, 22, 30, 10); Duration duration = Duration.between(date3, date4); System.out.println(date3 + " 与 " + date4 + " 间隔 " + "\n" + " 天 :" + duration.toDays() + "\n" + " 时 :" + duration.toHours() + "\n" + " 分 :" + duration.toMinutes() + "\n" + " 毫秒 :" + duration.toMillis() + "\n" + " 纳秒 :" + duration.toNanos() + "\n" ); //注意,并没有获得秒差的,但既然可以获得毫秒,秒就可以自行获取了

参考文档: https://blog.csdn.net/u014044812/article/details/79231738 https://www.cnblogs.com/dauber/p/9466539.html https://www.jianshu.com/p/048ee8580639

最新回复(0)