Java中LocalDateTime的使用

您所在的位置:网站首页 java中的return怎么用 Java中LocalDateTime的使用

Java中LocalDateTime的使用

2023-08-25 08:35| 来源: 网络整理| 查看: 265

Java中LocalDateTime使用

文章目录 Java中LocalDateTime使用1. 简介2. LocalDateTime用法2.1 获取当前的时间2.2 根据年月日格式化时间2.3 获取时区东八区的时间2.4 从LocalDateTime中获取年月日等时间信息2.5 从LocalDateTime中获取LocalDate与LocalTime2.6 日期计算2.7 获取某天的整点时间,通过with修改值2.8 获取毫秒值2.9 计算两个时间的时间差 3. LocalDateTime与Date、String互转3.1 LocalDateTime 转 Date3.2 LocalDateTime 转 String3.3 String 转 LocalDateTime3.4 String 转 Date3.5 Date 转 LocalDateTime3.6 Date 转 String

1. 简介

LocalDateTime、LocalDate、LocalTime 是Java8全新的日期框架,较之前的util.Date以及Calander使用起来更加的方便直观,下面介绍几种常见的日期对象用法。 LocalDateTime:日期加时间的日期对象,包含年月日时分秒 LocalDate:日期类,包含年月日 LocalTime:时间类,包含时分秒 LocalDate、LocalTime、LocalDateTime、Instant均为不可变对象,修改这些对象对象会返回一个副本。而并非在原对象上修改。

2. LocalDateTime用法 2.1 获取当前的时间 LocalDateTime now = LocalDateTime.now(); 2.2 根据年月日格式化时间 LocalDateTime localDateTime = LocalDateTime.of(2021, 6, 16, 16, 37, 20, 814 * 1000 * 1000); LocalDateTime ldt = LocalDateTime.now().withYear(2021).withMonth(6).withDayOfMonth(16).withHour(10).withMinute(10).withSecond(59).withNano(999 * 1000 * 1000);

注意:最后一个参数是纳秒

2.3 获取时区东八区的时间 LocalDateTime datetime = LocalDateTime.now(ZoneId.of("Asia/Shanghai")); LocalDateTime datetime2 = LocalDateTime.now(ZoneId.of("+8")); 2.4 从LocalDateTime中获取年月日等时间信息 LocalDateTime now = LocalDateTime.now(); int year = now.getYear(); int month = now.getMonthValue(); int dayOfYear = now.getDayOfYear(); int dayOfMonth = now.getDayOfMonth(); int hour = now.getHour(); int minute = now.getMinute(); int second = now.getSecond(); int nano = now.getNano(); System.out.println(year + " " + month + " " + dayOfYear + " " + dayOfMonth); System.out.println(hour + " " + minute + " " + second + " " + nano); 2.5 从LocalDateTime中获取LocalDate与LocalTime LocalDate localDate = now.toLocalDate(); LocalTime localTime = now.toLocalTime(); 2.6 日期计算 LocalDateTime now = LocalDateTime.now(); LocalDateTime tomorrow = now.plusDays(1L); tomorrow = tomorrow.plusHours(2L); tomorrow = tomorrow.plusMinutes(10L); LocalDateTime yesterday = now.minus(Duration.ofDays(1)); yesterday = yesterday.plusHours(2L); yesterday = yesterday.plusMinutes(10L); System.out.println(tomorrow); System.out.println(yesterday);

注意:LocalDateTime、LocalDate、LocalTime 日期对象每次修改都会创建一个新的对象,而非在原有对象基础上修改

2.7 获取某天的整点时间,通过with修改值 LocalDateTime now = LocalDateTime.now(); LocalDateTime ldt1 = now.withHour(10).withMinute(0).withSecond(0).withNano(0); 2.8 获取毫秒值 Instant instant = Instant.now(); long min = instant.toEpochMilli(); System.out.println(min); 2.9 计算两个时间的时间差

下面这种方式可以获取两个时间点相差N年N月N日N时N分N秒

LocalDateTime fromDateTime = LocalDateTime.of(1992, 6, 11, 10, 23, 55); LocalDateTime toDateTime = LocalDateTime.now(); LocalDateTime tempDateTime = LocalDateTime.from(fromDateTime); long years = tempDateTime.until(toDateTime, ChronoUnit.YEARS); tempDateTime = tempDateTime.plusYears(years); long months = tempDateTime.until(toDateTime, ChronoUnit.MONTHS); tempDateTime = tempDateTime.plusMonths(months); long days = tempDateTime.until(toDateTime, ChronoUnit.DAYS); tempDateTime = tempDateTime.plusDays(days); long hours = tempDateTime.until(toDateTime, ChronoUnit.HOURS); tempDateTime = tempDateTime.plusHours(hours); long minutes = tempDateTime.until(toDateTime, ChronoUnit.MINUTES); tempDateTime = tempDateTime.plusMinutes(minutes); long seconds = tempDateTime.until(toDateTime, ChronoUnit.SECONDS); System.out.println("" + java.time.Duration.between(tempDateTime, toDateTime).toHours()); System.out.println(years + " years " + months + " months " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds.");

如果只想获取两个时间相差的天数或者小时数,可以使用以下方法

LocalDateTime ldt1 = LocalDateTime.of(1992, 6, 11, 10, 23, 55); LocalDateTime ldt2 = LocalDateTime.now(); System.out.println(Duration.between(ldt1, ldt2).toDays()); System.out.println(Duration.between(ldt1, ldt2).toHours()); 3. LocalDateTime与Date、String互转 3.1 LocalDateTime 转 Date public static Date localDateTime2Date(LocalDateTime localDateTime) { return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); } 3.2 LocalDateTime 转 String private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); public static String localDateTime2String(LocalDateTime localDateTime) { return localDateTime.format(DATE_TIME_FORMATTER); }

注意:DateTimeFormatter是线程安全的类,可以将此类放到常量中。

3.3 String 转 LocalDateTime private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); public static LocalDateTime string2LocalDateTime(String str) { return LocalDateTime.parse(str, DATE_TIME_FORMATTER); } 3.4 String 转 Date public static Date string2Date(String str) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return simpleDateFormat.parse(str); }

注意:SimpleDateFormat是非线程安全的类,在多线程操作时会报错,所以此对象每次用的时候最好新建。或者作为方法入参传递进来。

3.5 Date 转 LocalDateTime public static LocalDateTime date2LocalDateTime(Date date) { return date.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime(); } 3.6 Date 转 String public static String date2String(Date date) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return formatter.format(date); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3