最近項(xiàng)目中遇到了多語(yǔ)言適配日期的問(wèn)題,在這里記錄一下
首先,問(wèn)題是要講一個(gè)時(shí)間戳轉(zhuǎn)換為25/Feb/2020和02/20這種格式
開(kāi)始想著使用SimpleDateFormat來(lái)格式化,可是不理想,沒(méi)法實(shí)現(xiàn)英文月份和短年份(可能是我使用的姿勢(shì)不對(duì)),沒(méi)辦法只能使用農(nóng)村包圍城市的辦法,分別拿到年月日的字符串再拼接出來(lái)。
本來(lái)開(kāi)始使用的Date.getYear()類似的方法但是提示過(guò)時(shí)了,后來(lái)轉(zhuǎn)為使用Calendar
這里我使用Calendar和String.format()這兩個(gè)方法結(jié)合:
//獲取Calendar對(duì)象
Calendar instance = Calendar.getInstance(Locale.US);
long time = System.currentTimeMillis();
//將時(shí)間戳傳給Calendar
instance.setTimeInMillis(time);
//獲取年份
System.out.println(instance.get(Calendar.YEAR));//2020
//獲取日期
System.out.println(instance.get(Calendar.DAY_OF_MONTH));//25
//獲取月份
System.out.println(instance.get(Calendar.MONTH));//2
獲取到了年月日的字符串,就可以隨意拼接啦,也不會(huì)提示方法過(guò)期,美滋滋。
可是問(wèn)題又來(lái)了,無(wú)法將月份變成英文版,也無(wú)法獲取到短年份字符串,當(dāng)當(dāng)當(dāng)當(dāng),所以又使用String.format()函數(shù)。

try {
????Date date = sdf.parse("2020-02-25");
????System.out.println("日期-"+String.format(Locale.US,"%td",date));//25
????System.out.println("月份-"+String.format(Locale.US,"%tb",date));//Feb
????System.out.println("年份-"+String.format(Locale.US,"%ty",date));//20年
????System.out.println("年份-"+String.format(Locale.US,"%tY",date));//2020年 ????System.out.println(String.format(Locale.US,"%tD%n",date));//02/25/20
?????System.out.println(String.format(Locale.US,"%tF%n",date));//2020-02-25
} catch (ParseException e) {
????e.printStackTrace();
}
這樣就得到了我們想要的字符串了,可以隨意拼接啦。
over.