JDK1.8新特性之新日期API

    技术2022-07-11  96

    新日期

    JDK1.8和旧版本的区别LocalDateLocalTimeLocalDateTime

    JDK1.8和旧版本的区别

    使用的方式不同(更加简便) jdk1.8:LocalDateTime currentTime = LocalDateTime.now(); --获取当前时间(年-月-日 时: 分:秒) LocalDate today = LocalDate.now();–获取当前时间(年-月-日) LocalTime totime=LocalTime.now();–获取当前时间(时:分:秒) 旧版本: Calendar c = Calendar.getInstance(); c.getTime() --获取当前时间(Wed Jul 01 16:10:28 CST 2020)

    引用的jar包不同 jdk1.8:import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; 旧版本: import java.util.Calendar;

    我们重点讲一下JDK1.8时间的使用

    LocalDate

    引用的包: import java.time.LocalDate;使用方法以及转换方法 // 获取当前日期 LocalDate today = LocalDate.now(); //获取=========================== today.getYear();//获取当年年份 today.getMonthValue();//获取当前月份 today.getMonth();//获取当前月份(英文) today.getDayOfMonth();//获取当前月是几号 today.getDayOfWeek().getValue();//获取当前周是周几 today.getDayOfYear();//获取当前年的多少天 today.lengthOfYear();//获取当年有多少天 today.lengthOfMonth();//获取当前月有多少天 today.isLeapYear();//获取当前年是不是闰年 //修改=========================== today.withYear();//修改年份 today.withMonth();//修改月份 today.withDayOfMonth()//修改日份 //比较=========================== today.compareTo(LocalDate.of(2010, 1, 1));//比较两个时间相差几年 today.isBefore(LocalDate.of(2010, 1, 1));//比较当前日期是否比参数日期早(true为早,false为晚) today.isAfter(LocalDate.of(2010, 1, 1));//比较当前日期是否比参数日期晚(true为晚,false为早) today.isEqual(LocalDate.now());//比较两个日期是否相等 //增加/减少=========================== today.plusYears(1);// 当前日期增加指定的年数 today.plusMonths(1);// 当前日期增加指定的月份 today.plusWeeks(1);// 当前日期增加指定的周数 today.plusDays(1);// 当前日期增加指定的天数 today.minusYears(1);// 当前日期减少指定的年数 today.minusMonths(1);// 当前日期减少指定的月份 today.minusWeeks(1);// 当前日期减少指定的周数 today.minusDays(1);// 当前日期减少指定的天数 //相互转换=========================== // LocalDate 转 String DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String string= today.format(dateTimeFormatter); // String 转 LocalDate String str = "2020-07-01"; DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse(str, fmt); // Date 转 LocalDate Date date= new Date(); // 先将java.util.Date转换为ZonedDateTime Instant instant = date.toInstant(); ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = instant.atZone(zoneId); // 使用它的toLocalDate()方法从ZonedDateTime获取LocalDate。 LocalDate localDate = zonedDateTime.toLocalDate(); // LocalDate 转 Date ZoneId zoneId= ZoneId.systemDefault(); LocalDate localDate = LocalDate.now(); ZonedDateTime zonedDateTime = localDate .atStartOfDay(zoneId); Date date = Date.from(zonedDateTime .toInstant());

    LocalTime

    引用的包: import java.time.LocalTime;使用方法以及转换方法 LocalTime now = LocalTime.now();//获取当前时间 时分秒 //获取=========================== now.withNano(0);//获取当前时间时分 now.getHour();//获取当前时 now.getMinute();//获取当前分钟 now.getNano();//获取当前毫米数 //比较=========================== now .compareTo(LocalDate.of(2010, 1, 1));//比较两个时间 now .isBefore(LocalDate.of(2010, 1, 1));//比较当前时间是否比参数时间早(true为早,false为晚) now .isAfter(LocalDate.of(2010, 1, 1));//比较当前时间是否比参数时间晚(true为晚,false为早) //修改=========================== now.withNano(12345);//修改毫秒数 now.withSecond(int second);//修改秒数 now.withMinute(int minute);//修改分 now.withHour(int hour);//修改时 //支持=========================== now.MAX;// 支持的最大本地时间 now.MIN;// 支持的最小本地时间 now.MIDNIGHT; // 午夜时间:00:00 now.NOON; // 正午时间:12:00 //增加/减少=========================== now.plusNanos(); // 添加毫秒 now.plusSeconds(); // 添加秒 now.plusMinutes(); // 添加分钟 now.plusHours(); // 添加小时 now.minus(); //减少指定时间 now.minusNanos(); // 减少指定毫秒数 now.minusSeconds(); // 减少指定秒数 now.minusMinutes(); // 减少指定分钟数 now.minusHours(); //减少指定小时数

    LocalDateTime

    引用的包: import java.time.LocalTime;使用方法以及转换方法 // 支持的最大本地日期时间(不包括时区) LocalDateTime max = LocalDateTime.MAX;// +999999999-12-31T23:59:59.999999999 // 支持的最小本地日期时间(不包括时区) LocalDateTime min = LocalDateTime.MIN;// -999999999-01-01T00:00 // 获取本地当前的日期时间(不含时区) LocalDateTime now = LocalDateTime.now(); // 从指定的时钟获取当前日期时间:这里用了UTC(世界标准时间) LocalDateTime nowClock = LocalDateTime.now(Clock.systemUTC()); //从指定时区中的系统时钟获取当前日期时间 LocalDateTime nowZoneId = LocalDateTime.now(ZoneId.systemDefault()); // 从年,月,日,小时和分钟获取LocalDateTime的实例,并将秒和毫秒设置为零。 LocalDateTime dateTime = LocalDateTime.of(2020, 07, 01, 6, 30); LocalDateTime localDateTime = LocalDateTime.of(2020, Month.AUGUST, 01, 6, 30); // 根据日期和时间获取LocalDateTime的实例 LocalDateTime ldt = LocalDateTime.of(LocalDate.now(), LocalTime.now()); // 使用从1970-01-01T00:00:00Z的纪元开始的秒数获取LocalDateTime的实例,参数1:从纪元开始的秒数,参数2:毫秒数,参数3:时区 LocalDateTime time = LocalDateTime.ofEpochSecond(55L, 99999, ZoneOffset.UTC); // 从Instant和区域ID获取LocalDateTime的实例。 LocalDateTime ofInstant = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()); // 将字符串转化成日期时间对象 LocalDateTime parse = LocalDateTime.parse("2020-07-01T16:54:50.941"); // 使用特定格式化程序将文本字符串转成LocalDateTime对象 LocalDateTime parse1 = LocalDateTime.parse("2020-07-01T16:54:50.941+01:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME); // 在该日期时间基础上增加或减少一定时间,参数1:时间量,可以是负数,参数2:时间单位 LocalDateTime plus = parse.plus(1L, ChronoUnit.HOURS); // 在该时间基础上增加一定时间 LocalDateTime plus1 = parse.plus(Period.ofDays(1)); //增加指定天数 LocalDateTime plus2 = parse.plusDays(1L); // 时区时间 LocalDateTime cur = LocalDateTime.now();// 本地默认时间 LocalDateTime ldt = LocalDateTime.now(ZoneId.of("America/Los_Angeles"));// 时区当前时间 OffsetDateTime odt = OffsetDateTime.now(ZoneId.of("America/Los_Angeles"));// 带偏移量时间 ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("America/Los_Angeles"));// 带时区的时间 LocalDateTime ldto = odt.toLocalDateTime(); // 转本地类时间 LocalDateTime ldtz = zdt.toLocalDateTime();
    Processed: 0.009, SQL: 9