java8新特性(时间)
1.获取当前时间
只获取日期(只获取当前的日期:如2022-05-24)
LocalDate today=LocalDate.now()
只获取时间(只获取当前的时间:如09:46:06)
LocalTime todaayTime = LocalTime.now();
获取具体时间(获取具体的时间:如2022-05-24T09:46:06)
LocalDateTime now = LocalDateTime.now();
获取具体时间和时区(如:2022-05-24T09:46:06.452+08:00[Asia/Shanghai])
ZonedDateTime now1 = ZonedDateTime.now();
2.获取java8中的年,月,日信息
获取当前单独的年,月,日
//获取当前日期
LocalDate now = LocalDate.now();
//获取当前年
int year = now.getYear();
//获取当前月
int monthValue = now.getMonthValue();
//获取当前天
int dayOfMonth = now.getDayOfMonth();
获取01-01到当前过去了多少天
int dayOfYear = now.getDayOfYear();
3.自定义时间(自己定义一个时间)
//不用添加0,会自动补上
LocalDate of = LocalDate.of(2022, 1, 9);
4.时间比较是否相等(使用string的equal方法)
//时间相同,返回的true
LocalDate of = LocalDate.of(2022, 5, 24);
LocalDate now = LocalDate.now();
boolean equals = now.equals(of);
System.out.println(equals);
5.在Java 8中检查像生日这种周期性事件(当前日期和固定时间都要转化成MonthDay格式)
//第一个为false,第二个weitrue
LocalDate now = LocalDate.now();
MonthDay from = MonthDay.from(now);
MonthDay of = MonthDay.of(now.getMonthValue(), now.getDayOfMonth());
System.out.println(of.equals(now));
System.out.println(of.equals(from));
6.在当前的时间基础上增加,减少小时,分钟,秒
//获取当前时间
LocalTime now = LocalTime.now();
//增加2个小时
LocalTime localTime = now.plusHours(2);
//增加30分钟
LocalTime localTime1 = now.plusMinutes(30);
//增加99秒
LocalTime localTime2 = now.plusSeconds(99);
7.在当前时间基础上增加天,月,年、
//获取当前日期
LocalDate now = LocalDate.now();
//获取7天后的日期
LocalDate plus1 = now.plus(7, ChronoUnit.DAYS);
//获取7个星期后的日期
LocalDate plus = now.plus(7, ChronoUnit.WEEKS);
//获取7个月后的日期
LocalDate plus2 = now.plus(7, ChronoUnit.MONTHS);
//获取7年后的日期
LocalDate plus3 = now.plus(7, ChronoUnit.YEARS);
8.获取当前时间基础上减少天,月,年
//获取当前日期
LocalDate now = LocalDate.now();
//获取7天前的日期
LocalDate minus = now.minus(7, ChronoUnit.DAYS);
//获取7个星期前的日期
LocalDate minus1 = now.minus(7, ChronoUnit.WEEKS);
//获取7年前的日期
LocalDate minus2 = now.minus(7, ChronoUnit.YEARS);
9.使用Java 8的Clock时钟类获取时间戳(主要用来处理不同的时区)
Clock clock = Clock.systemUTC();
System.out.println(clock);
Clock clock1 = Clock.systemDefaultZone();
System.out.println(clock1);
10.时间的比较(isbefor如果time1在time2之前返回true,isagter如果time1在time2之后返回true)
//第一个返回true,第二个flase
LocalDate time1 = LocalDate.of(2022, 3, 20);
LocalDate time2 = LocalDate.now();
boolean before = time1.isBefore(time2);
boolean after = time1.isAfter(time2);
11.在Java 8中处理时区
暂不添加
12.获取当前年和月,获取当前月的天数
//获取当前年月
YearMonth now = YearMonth.now();
//获取当前月的天数
int i = now.lengthOfMonth();
13.判断当前年份是否为闰年
boolean leapYear = now.isLeapYear();
14.判断两个日期之前相差多少天,月,年
LocalDate now = LocalDate.now();
LocalDate plus1 = now.plus(7, ChronoUnit.DAYS).plus(7,ChronoUnit.WEEKS);
//获取相差多久
Period between = Period.between(now, plus1);
//获取相差几月
between.getMonths();
//获取相差几天
between.getDays();
//获取相差几年
between.getYears();
15.包含时差信息的日期和时间
暂不添加
16.获取当亲的时间戳
Instant now = Instant.now();
//date和instant的相互转换
Date.from(Instant);
Date.toInstant();
17.使用预定义的格式化工具去解析或格式化日期
String time="20200125";
//将字符串转化成时间格式
LocalDate parse = LocalDate.parse(time, DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(parse);
18.在Java中使用自定义格式化工具解析日期
String time="2022-02-25";
LocalDate parse = LocalDate.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(parse);
19.将日期转化成字符串
LocalDate now = LocalDate.now();
String format = now.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(format);
20.date,calendar,localtime,localdate的相互转换
// LocalDateTime 转 Date
Date localDateTimeDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
// LocalDateTime 转 Calendar
Calendar localDateTimeCalendar = GregorianCalendar.from(ZonedDateTime.of(localDateTime, ZoneId.systemDefault()));
// Date 转 LocalDateTime
LocalDateTime dateLocalDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
// Calendar 转 LocalDateTime
LocalDateTime calendarLocalDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneOffset.systemDefault());