1 所有类都是不变的,线程安全的;
2 所有类都提供了格式化和转化方法,不再依靠java.text包,所有类都提供了+-*/等操作时间的方法;
3 所有类都采用工厂模式和策略模式,便于和其它类协同工作;
4 提供了国家化和时区支持,不再依靠java.util.Calendar和java.util.TimeZone类;
****************************************
java.time.LocalDate
日期:年月日
常用方法
1 初始化
LocalDate ld = LocalDate.now(); //2017-11-28,当前日期
LocalDate ld = LocalDate.of(2017, 11, 29); //2017-11-29,参数都是int
LocalDate ld = LocalDate.of(2017, Month.NOVEMBER, 29); //2017-11-29,参数有一个Month类型
LocalDate ld = LocalDate.ofYearDay(2017, 1); //2017-01-01,某年的第几天
LocalDate ld = LocalDate.ofEpochDay(365); //1971-01-01,距离1970-01-01过了多少天
2 转换
字符串--->日期
LocalDate ld = LocalDate.parse("2017-11-28"); //参数是CharSequence接口,String是它的一个实现类,标准格式字符串
LocalDate ld = LocalDate.parse("28/11/2017",DateTimeFormatter.ofPattern("dd/MM/yyyy")); //非标准格式
日期--->字符串
String s = LocalDate.now().toString(); //2017-11-28,标准格式
String s = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")); //2017年11月28日,非标准格式
3 获取分量
LocalDate ld = LocalDate.now(); //2017-11-28
System.out.println(ld.getYear()); //2017,返回int
System.out.println(ld.getMonth()); //NOVEMBER,返回Month类型,枚举值
System.out.println(ld.getMonthValue()); //11,返回int
System.out.println(ld.getDayOfYear()); //332,返回int
System.out.println(ld.getDayOfMonth()); //28,返回int
System.out.println(ld.getDayOfWeek()); //TUESDAY,返回DayOfWeek类型,枚举值
System.out.println(ld.toEpochDay()); //17498,1970-01-01到该时间过了多少天
4 更改分量
with开头方法,根据一个时间点更改
plus开头方法,根据一个时间段更改
minus开头方法,根据一个时间段更改
5 日期比较
isBefore()/isAfter()/isEqual()/equals()/compareTo()
6 LocalDate添加时分秒转为LocalDateTime
at开头方法
其它方法
LocalDate ld = LocalDate.now(); //2017-11-28
System.out.println(ld.isLeapYear()); //false
System.out.println(ld.lengthOfMonth()); //30
System.out.println(ld.lengthOfYear()); // 365