DateTimeFormatter类的使用
格式化解析日期时间的类(解析我们的LocalDateTime,LocalDate,LocalTime类)
DateTimeFormatter类的全类名:
java.time.format.DateTimeFormatter
实例化
我们DateTimeFormatter类的实例化方式一共有三种
方式一:
预定义的标准格式 ---- 调用这几个静态常量
- 使用预定义的标准格式创建的DateTImeFormatter对象只能是默认的格式
- 这种预定义的方式创建的DateTimeFormatter对象格式化和解析的格式和LocalDateTime,LocalDate,LocalTime对象使用打印(也就是默认调用toString()方法)方法输出的格式相同
-
ISO_LOCAL_DATE_TIME
DateTimeFormatter formatter = DateTimeForMatter.ISO_LOCAL_DATE_TIME;
- 这里我们就创建出了一个DateTimeFormatter对象,然后我们就可以这个创建出的对象去调用格式化(format())和解析方法(parse())
-
IOS_LOCAL_TIME
-
IOS_LOCAL_TIME
方式二:
本地化相关的格式: —调用以下三种静态方法方法
-
ofLocalLizedDateTime();
- 这个方法中可以传入三个参数
-
- FormatStyle.LONG
- FormatStyle.SHORT
- FormatStyle.MEDIUM
-
- 使用这个方法创建出来的DateTimeFormatter对象用来解析和格式化LocalDateTime类的对象
eg:
DateTimeFormatter Formatter = DateTImeFormatter.ofLocalLizedDateTime();
- 这里就是创建出了一个DateTimeFormatter类的对象,这个时候我们就可以通过这个对象去调用格式化和解析的方法
- 这个方法中可以传入三个参数
-
ofLocalLizedDate();
- 这个方法可以传入三个参数
- 多了一个FormatStyle.FULL
- 这个方法创建出来的DateTimeFormatter对象用来解析和格式化LocalDate类的对象
- 这个方法可以传入三个参数
-
ofLocalLizedTIme();
- 这个就是用来格式化和解析LocalTime对象的
方式三:
自定义的格式创建----调用ofPattern(String pattern)方法
我们调用ofPattern()方法可以创建一个自定义格式的DateTimeFormatter对象
eg:
DateTimeFormatter Formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
- 这里y表示年
- 这里的M表示月
- 这里的d表示日期
- 这里的H表示小时(全天计算)
- h表示小时(分上午,下午)
- 这里的m表示分钟
- 这里的s表示秒
- E表示星期几
格式化:
调用format()方法
- 我们的解析和我们的格式化都是非静态方法,都需要我们创建DateTimeFormatter对象之后通过对象调用
eg:
String str = formatter.format(LocalDateTime.now());
- 我们的DateTImeFormatter类中的format()方法就是将我们的LocalDateTIme(还有LocalDate,LocalTime)对象转为String
- 我们的DateTImeFormatter类中的format(TemporalAccessor temporal)方法中的形参是TemporalAccessor接口类型的,而我们的LocalDateTime,LocalDate,LocalTime这三个类都实现了Temporal接口,而Temporal接口又继承了TemporalAccessor接口
- 所以我们在这个format()方法中传入LocalDateTime这三个类都是构成了多态
解析:
调用parse()方法
- 我们的格式化和解析方法都是非静态方法,都需要我们创建DateTimeFormatter对象之后通过对象调用
eg:
TemporalAccessor accessor = formatter.parse("2019-02-18 03:52:09");
- 我们这里的TemporalAccessor是一个接口,而我们的LocalDateTime,LocalDate,LocalTime这三个类都实现了Temporal接口,而Temporal接口又继承了TemporalAccessor接口,这里就是形成了多态