在java.time.format包下提供一个DateTimeFormatter格式器类,该类相当于DateFormat和SimpleDateFormat的合体功能更强大。DateTimeFormat不仅可以将日期、时间对象格式化成字符串,也可以将特定格式的字符串解析成日期、时间对象。为使用DateTimeFormatter进行格式或解析,必须获取DateTimeFormatter对象,获取DateTimeFormatter对象有三种常见方式。直接使用静态常量创建DateTimeFormatter格式器。(DateTimeFormat类中含有大量的形如ISO_LOCAL_DATE等静态常量,这些常量本身就是DateTimeFormatter实例);使用代表不同风格的枚举值来创建DateTimeFormat格式器;根据模式字符串来创建DataTimeFormatter格式器 。
1. DateTimeFormatter通常调用format(TemporalAccessor temporal)方法执行格式化,其中LocalDate、LocalDateTime、LocalTime等类都是TemporalAccessor接口的实现类,另外就是调用LocalDate、LocalDateTime、LocalTime等日期、时间对象的format(DateTimeFormatter formatter)方法执行格式化。
package com.lanou.test;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.time.format.FormatStyle;public class Demo008 { public static void main(String[] args) { // TODO Auto-generated method stub DateTimeFormatter[] dateTimeFormatters=new DateTimeFormatter[]{ DateTimeFormatter.ISO_LOCAL_DATE, DateTimeFormatter.ISO_LOCAL_TIME, DateTimeFormatter.ISO_LOCAL_DATE_TIME, DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL,FormatStyle.MEDIUM), DateTimeFormatter.ofLocalizedTime(FormatStyle.LONG), DateTimeFormatter.ofPattern("Gyyyy--MMM--dd HH:MM:SS") }; LocalDateTime date=LocalDateTime.now(); for(int i=0;i
2.为了使用DateTimeFormatter将指定格式的字符串解析成日期、时间对象(LocalDate、LocalDateTime、LocalTime等实例),可通过日期、事件对象提供的parse(CharSequence text,DateTimeFormat format)方法来进行解析。
package com.lanou.test;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class Demo009 { public static void main(String[] args) { // TODO Auto-generated method stub String str="2016--07--12"; DateTimeFormatter fomaDateTimeFormatter=DateTimeFormatter. ofPattern("yyyy--mm--dd"); LocalDateTime dt1=LocalDateTime.parse(str,fomaDateTimeFormatter); System.out.println(dt1); }}