Java知识点–DataFormat,SimpleDateFormat和DateTimeFormatter
这个知识点没什么难懂的地方,就不一一赘述了。
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;public class test01 {public static void main(String[] args) throws Exception{Date date = new Date();Locale[] locales= {Locale.CHINA,Locale.US};DateFormat[] df=new DateFormat[16];for(int i=0;i<locales.length;i++) {df[i*8]=DateFormat.getDateInstance(DateFormat.SHORT,locales[i]);df[i*8+1]=DateFormat.getDateInstance(DateFormat.MEDIUM, locales[i]);df[i*8+2]=DateFormat.getDateInstance(DateFormat.LONG, locales[i]);df[i*8+3]=DateFormat.getDateInstance(DateFormat.FULL, locales[i]);df[i*8+4]=DateFormat.getTimeInstance(DateFormat.SHORT, locales[i]);df[i*8+5]=DateFormat.getTimeInstance(DateFormat.MEDIUM, locales[i]);df[i*8+6]=DateFormat.getTimeInstance(DateFormat.LONG, locales[i]);df[i*8+7]=DateFormat.getTimeInstance(DateFormat.FULL, locales[i]);}for(int i=0;i<locales.length;i++) {var tip=i==0?"---中国日期格式---":"---美国日期格式---";System.out.println(tip);System.out.println("SHORT格式的日期格式:"+df[i*8].format(date));System.out.println("MEDIUM格式的日期格式:"+df[i*8+1].format(date));System.out.println("LONG格式的日期格式:"+df[i*8+2].format(date));System.out.println("FULL格式的日期格式:"+df[i*8+3].format(date));System.out.println("SHORT格式的时间格式:"+df[i*8+4].format(date));System.out.println("MEDIUM格式的时间格式:"+df[i*8+5].format(date));System.out.println("LONG格式的时间格式:"+df[i*8+6].format(date));System.out.println("FULL格式的时间格式:"+df[i*8+7].format(date));}}
}
import java.text.DateFormat;public class test02 {public static void main(String[] args) throws Exception {var str1="2020/5/25";var str2="2020年5月25日";System.out.println(DateFormat.getDateInstance().parse(str2));System.out.println(DateFormat.getDateInstance(DateFormat.SHORT).parse(str1));//异常System.out.println(DateFormat.getDateInstance().parse(str1));}
}
比起DateFormat,SimpleDateFormat不拘于格式,只要你个格式化字符串足够准确,就会得到你想要的结果
import java.text.SimpleDateFormat;
import java.util.Date;public class test03 {public static void main(String[] args) throws Exception{Date date = new Date();SimpleDateFormat format = new SimpleDateFormat("Gyyyy年的第D天");String string = format.format(date);System.out.println(string);String str="14###3月##21";SimpleDateFormat format2 = new SimpleDateFormat("y###MMM##d");System.out.println(format2.parse(str));}
}
- DateTimeFormatter
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;public class test04 {public static void main(String[] args) {DateTimeFormatter[] formatter=new DateTimeFormatter[] {DateTimeFormatter.ISO_LOCAL_DATE,DateTimeFormatter.ISO_LOCAL_TIME,DateTimeFormatter.ISO_LOCAL_DATE_TIME,DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL,FormatStyle.MEDIUM),DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG),DateTimeFormatter.ofPattern("Gyyyy%%MMM%%dd HH:mm:ss")};LocalDateTime now = LocalDateTime.now();for(int i=0;i<formatter.length;i++) {System.out.println(now.format(formatter[i]));System.out.println(formatter[i].format(now));}}
}
- 解析字符串
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class test05 {public static void main(String[] args) {String str1="2020==05==25 10时01分01秒";DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy==MM==dd HH时mm分ss秒");LocalDateTime parse = LocalDateTime.parse(str1,pattern);System.out.println(parse);String str2="2020$$$5月$$$13 20小时";DateTimeFormatter pattern2 = DateTimeFormatter.ofPattern("yyy$$$MMM$$$dd HH小时");LocalDateTime parse2 = LocalDateTime.parse(str2,pattern2);System.out.println(parse2);}
}