持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
1.8之前的jdk版本对于时间类型,使用的都是Date以及Calendar和SimpleDateFormat类来进行操作。
普遍使用方法都是
1.Date time = new Date();获取到当前时间
2.通过SimpleDateFormat来进行时间的格式化
3.通过Calendar来对时间进行操作(修改天数等)
JDK8新特性提供了3个时间类:LocalDate、LocalTime、LocalDateTime
1. LocalDateTime localDateTime=LocalDateTime.now();获取到当前时间
2.
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String localDateTimeStr=dateTimeFormatter.format(localDateTime);对时间进行格式化
虽然以上两点看起来都差不多 但是第三点开始区别就很大了
3.对LocalDateTime进行操作
****// 获取当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
// 获取LocalDate
LocalDate localDate2 = localDateTime.toLocalDate();
// 获取LocalTime
LocalTime localTime2 = localDateTime.toLocalTime();**
**
可以理解为把LocalDateTime分成了 “日期”与“时间”
4.对日期LocalDate进行操作
//获取当前日期
LocalDate localDate=LocalDate.now();
//打印年月日
System.out.println(localDate.toString());
//打印年
System.out.println(localDate.getYear());
//打印月
System.out.println(localDate.getMonth().getValue());
//打印日
System.out.println(localDate.getDayOfMonth());
//打印日
System.out.println(localDate.getDayOfYear());
//打印日 星期几
System.out.println(localDate.getDayOfWeek().getValue()); \
5.对时间LocalTime进行操作
// 获取当前时间
LocalTime localtime= LocalTime.now();
System.out.println(localtime); ---> 11:48:30.556 带有毫秒值
System.out.println(localtime.withNano(0)) --->11:48:30 不在毫秒值 还有withHour(0)等方法把小时设置为0
// 设置时间
LocalTime localTime = LocalTime.of(13, 51, 10);
//获取小时
int hour = localTime.getHour(); // 结果:13
int hour1 = localTime.get(ChronoField.HOUR_OF_DAY); // 结果:13
//获取分
int minute = localTime.getMinute(); // 结果:51
int minute1 = localTime.get(ChronoField.MINUTE_OF_HOUR); // 结果:51
//获取秒
int second = localTime.getSecond(); // 结果:10
int second1 = localTime.get(ChronoField.SECOND_OF_MINUTE); // 结果:10**
6.** LocalDate、LocalTime、LocalDateTime为不可变对象,修改这些对象对象会返回一个副本。增加、减少年数、月数、天数等 以LocalDateTime为例。
//增加一年
localDateTime = localDateTime.plusYears(1);
localDateTime = localDateTime.plus(1, ChronoUnit.YEARS);
//减少一个月
localDateTime = localDateTime.minusMonths(1);
localDateTime = localDateTime.minus(1, ChronoUnit.MONTHS);
//减少一天
LocalDateTime localDateTime=date2LocalDateTime(new Date());
localDateTime = localDateTime.minus(1, ChronoUnit.DAYS);