说明
java8引入一套全新时间日期API,位于java.time包下,包下所有类线程安全,且不可变。 主要类
Instan 处理时间戳 LocalDate 处理日期,如2020-10-23,可存储生日、纪念日、入职日期等。 LocalTime 处理不包含日期的时间,如:HH:MM:ss:nnn LocalDateTime 处理日期和时间,不包含时区信息 ZonedDateTime 处理包含时区的日期和时间,偏移量以UTC(格林威治时间)为准 MonthDay 处理月日,不包含年,可以用来代表每年重复出现的一些日期或其他组合。 Clock 获取时区下时间和日期,代替System.currentTimelnMillis()与TimeZone.getDefault()方法。 YearMonth 处理年月 Period 时间差处理类 DateTimeFormatter时间格式处理类
主要方法
get***() 获取年、月、周、日、时、分、秒、纳秒 plus**() 增加年、月、周、日、时、分、秒、纳秒 minus**() 减少年、月、周、日、时、分、秒、纳秒 is**() 比较连个时间前后顺序 equals() 两个时间是否相同 parse() 输入时间格式设置 format() 输出时间格式设置
LocalDate 操作当前日期
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);
int year =today.getYear();
System.out.println("年:"+year);
int month=today.getMonthValue();
System.out.println("月:"+month);
int day=today.getDayOfMonth();
System.out.println("日:"+day);
int yearDay=today.getDayOfYear();
System.out.println("本年第几天:"+yearDay);
LocalDate date=LocalDate.of(2019, 12, 30);
System.out.println("今天是否为2019-12-30?"+date.equals(today));
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);
LocalDate nextDay=today.plusDays(1);
System.out.println("一天后日期:"+nextDay);
LocalDate nextYear=today.plusYears(1);
System.out.println("一年后日期:"+nextYear);
LocalDate nextMonth=today.plusMonths(1);
System.out.println("一月后日期:"+nextMonth);
LocalDate nextWeek=today.plus(1, ChronoUnit.WEEKS); //支持年、月、日、周
System.out.println("一周后日期:"+nextWeek);
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);
LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
LocalDate beforYear=today.minusYears(1);
System.out.println("一年前日期:"+beforYear);
LocalDate beforMonth=today.minusMonths(1);
System.out.println("一月前日期:"+beforMonth);
LocalDate beforWeek=today.minus(1, ChronoUnit.WEEKS); //支持年、月、日、周
System.out.println("一周前日期:"+beforWeek);
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);
LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
System.out.println("当前日期:"+today+"在日期:"+beforDay+"前 "+today.isBefore(beforDay));
System.out.println("当前日期:"+today+"在日期:"+beforDay+"后 "+today.isAfter(beforDay));
LocalDate today=LocalDate.now();
System.out.println("当前日期:"+today);
LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
Period peri=Period.between(today, beforDay);
System.out.println(today+" 与 "+beforDay+" 相差天数"+peri.getDays()); //支持天、月、周、年
MonthDay操作生日
LocalDate today=LocalDate.now();
LocalDate date=LocalDate.of(1993, 06, 01);
MonthDay birthday=MonthDay.of(date.getMonth(), date.getDayOfMonth());
MonthDay nowDay=MonthDay.from(today);
System.out.println("今天是否是生日?"+birthday.equals(nowDay));
YearMonth操作
YearMonth current=YearMonth.now();
System.out.println("当下年月:"+current+" 月天数:"+current.lengthOfMonth());
Clock 时区操作
System.out.println(Clock.systemDefaultZone()); //获取当前时区
System.out.println(Clock.systemUTC()); //获取当前时间
自定义时间格式
String format="20200110";
LocalDate formatDate=LocalDate.parse(format,DateTimeFormatter.BASIC_ISO_DATE);
System.out.println("时间"+formatDate);
format="2020 10 01";
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy dd MM");
formatDate=LocalDate.parse(format, formatter);
System.out.printf("转换前:%s 转换后:%s %n",format,formatDate);
formatter=DateTimeFormatter.ofPattern("yyyy dd MM HH:mm");
LocalDateTime time=LocalDateTime.now();
String landding=time.format(formatter);
System.out.println(landding);