JDK1.8之前常用的时间日期类 Date SimpleDateFormat() Calendar
JDK1.8之后提供了一套全新的时间日期API 这套全新的API在 java.time 包下
LocalDate //年月日
LocalTime //时分秒
LocalDateTime//年月日时分秒
//这三个日期API里面采用静态方法 now() 获取当前的日期时间
#获取对象的方法
//方式1通过静态方法 now();
LocalDate localDate =LocalDate.now();
System.out.println(localDate);//2019-05-30
LocalTime now = LocalTime.now();
System.out.println(now);//10:33:37.106
LocalDateTime now1 = LocalDateTime.now();
System.out.println(now1);//2019-05-30T10:33:37.106
-----------------------------------------------------------------------------------------
//方式2通过静态方法of()方法参数可以指定年月日时分秒
LocalDateTime of = LocalDateTime.of(2019, 5, 29, 10, 37, 33);
System.out.println(of);//2019-05-29T10:37:33
常用方法
1.与获取相关的方法:get系类的方法
LocalDateTime now = LocalDateTime.now();
now.getYear();获取年
now.getMinute();获取分钟
now.getHour();获取小时
now.getDayOfMonth 获得月份天数(1-31)
now.getDayOfYear 获得年份天数(1-366)
now.getDayOfWeek 获得星期几(返回一个 DayOfWeek枚举值)
now.getMonth 获得月份, 返回一个 Month 枚举值
now.getMonthValue 获得月份(1-12)
now.getYear 获得年份
2.格式化日期日期字符串的方法 format()
LocalDateTime now = LocalDateTime.now();
String format = now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒"));
System.out.println(format);//2019年05月30日 10时49分10秒
3.转换的方法 toLocalDate();toLocalTime();
//与转换相关的方法
LocalDateTime now = LocalDateTime.now();
//转换成 年月日的这个日期
LocalDate localDate = now.toLocalDate();
//转换成 时分秒的这个日期
LocalTime localTime = now.toLocalTime();
System.out.println(localDate);//2019-05-30
System.out.println(localTime);//10:51:36.859
4.判断的方法
//isAfter() 判断一个日期是否在指定日期之后
//isBefore() 判断一个日期是否在指定日期之前
//isLeapYear() 判断是否是闰年注意是LocalDate类中的方法
LocalDate now = LocalDate.now();
LocalDate of = LocalDate.of(2010, 2, 19);
boolean after = of.isAfter(now);
boolean after1 = now.isAfter(of);
System.out.println(after);
System.out.println(after1);
boolean before = of.isBefore(now);
System.out.println(before);
boolean before1 = now.isBefore(of);
System.out.println(before1);
boolean leapYear = of.isLeapYear();
System.out.println(leapYear);
boolean leapYear1 = now.isLeapYear();
System.out.println(leapYear1);
5.解析的静态方法parse("2007-12-03T10:15:30");
paser() 将一个日期字符串解析成日期对象,注意字符串日期的写法的格式要正确,否则解析失败
//例如:
//LocalDateTime parse = LocalDateTime.parse("2007-12-03T10:15:30");
String str="2007-12-03";
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate parse = LocalDate.parse(str, dateTimeFormatter);
System.out.println(parse);
System.out.println("------------------------");
String str2 = "2007-12-03 15:20:30";
LocalDateTime parse1 = LocalDateTime.parse(str2, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(parse1);
System.out.println("--------------------");
String str3="15:20:30";
LocalTime parse2 = LocalTime.parse(str3, DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println(parse2);
注意细节:如果用LocalDateTime 想按照我们的自定义的格式去解析,注意
日期字符串的 年月日时分秒要写全,不然就报错
LocalDateTime ldt4 = LocalDateTime.now();
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime.parse("2018-01-21 20:30:36", formatter2);
6.添加年月日时分秒的方法 plus系列的方法 都会返回一个新的LocalDateTime的对象
//年月日,时分秒 加上对应的时间量
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
//注意添加完相应的时间量后,返回的是一个新对象
LocalDateTime localDateTime = now.plusYears(1);
System.out.println(localDateTime);
LocalDateTime localDateTime1 = now.plusDays(2);
System.out.println(localDateTime1);
7.减去年月日时分秒的方法 minus 系列的方法 注意都会返回一个新的LocalDateTime的对象
//给年月日时分秒减去相应的时间量
LocalDateTime now = LocalDateTime.now();
//注意:减去相应的时间量后,返回的是一个新的日期对象
LocalDateTime localDateTime = now.minusYears(2);
System.out.println(localDateTime);
注意:减去相应的时间量后,返回的是一个新的日期对象
LocalDateTime localDateTime1 = now.minusMonths(3);
System.out.println(localDateTime1);
8.指定年月日时分秒的方法 with系列的方法 注意都会返回一个新的LocalDateTime的对象
LocalDate of = LocalDate.of(2011, 10, 10);
LocalDate now = LocalDate.now();
System.out.println(now);
//指定完对应的日期后,返回的是一个新的日期对象
LocalDate localDate = now.withYear(2020);
//指定完对应的日期后,返回的是一个新的日期对象
LocalDate localDate1 = now.withMonth(12);
System.out.println(localDate);
System.out.println(localDate1);
System.out.println("---------------------------------");
LocalDate localDate2 = now.withDayOfMonth(20);
System.out.println(localDate2);
TemporalAdjuster temporalAdjuster = TemporalAdjusters.firstDayOfNextMonth();
temporalAdjuster = TemporalAdjusters.lastDayOfMonth();
temporalAdjuster = TemporalAdjusters.nextOrSame(DayOfWeek.TUESDAY);
temporalAdjuster = TemporalAdjusters.previous(DayOfWeek.MONDAY);
LocalDate with = now.with(temporalAdjuster);
LocalDate with1 = now.with(ChronoField.DAY_OF_YEAR, 100);
System.out.println(with1);
System.out.println(with);