本文介紹了如何在Java中將簡(jiǎn)單的日期格式化程序格式化為dd-3字母月-yyyy?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我有一個(gè)簡(jiǎn)單的日期格式化程序,格式如下:
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat(DATE_FORMAT);
//accessExpiryDate is a Date object
DATE_FORMATTER.format(accessExpiryDate);
并且將日期格式設(shè)置為yyyy-MM-dd。但我想設(shè)置日期格式,如“2019年6月1日”。日期+月份的前3個(gè)字母+年份。
我如何才能做到這一點(diǎn)?有沒(méi)有一種簡(jiǎn)單的方法/方法/類(lèi),或者我應(yīng)該編寫(xiě)我的自定義日期格式化程序方法?
推薦答案
java.time
不要使用Date和SimpleDateFormat。這些課程設(shè)計(jì)得很差,而且早就過(guò)時(shí)了,后者尤其出了名的麻煩。正如Jon Skeet所說(shuō),為了獲得更好的體驗(yàn),請(qǐng)轉(zhuǎn)到現(xiàn)代Java日期和時(shí)間API java.time。
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d MMM u", Locale.ENGLISH);
LocalDate ld = LocalDate.of(2019, Month.JUNE, 1);
System.out.println(ld.format(dateFormatter));
此代碼段的輸出為:
2019年6月1日
包括Mfor Month的許多格式模式字母可以生成數(shù)字或文本,具體取決于您在格式模式字符串中輸入的字母數(shù)(DateTimeFormatter和舊版SimpleDateFormat都是如此)。因此MM提供兩位數(shù)的月份數(shù)字,而MMM提供月份縮寫(xiě)(通常為三個(gè)字母,但在某些語(yǔ)言中可能更長(zhǎng)或更短)。
如果您現(xiàn)在從舊版API獲取一個(gè)無(wú)法更改或不想升級(jí)的舊式Date對(duì)象,您可以這樣轉(zhuǎn)換它:
Date accessExpiryDate = getFromLegacyApi();
LocalDate ld = accessExpiryDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
其余部分和以前一樣。現(xiàn)在,您已經(jīng)開(kāi)始使用現(xiàn)代API,并且可以按照自己的步調(diào)向這個(gè)方向遷移代碼庫(kù)。
鏈接:Oracle tutorial: Date Time說(shuō)明如何使用java.time。
這篇關(guān)于如何在Java中將簡(jiǎn)單的日期格式化程序格式化為dd-3字母月-yyyy?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,






