本文介紹了如何在Java中將簡單的日期格式化程序格式化為dd-3字母月-yyyy?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個簡單的日期格式化程序,格式如下:
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);
并且將日期格式設置為yyyy-MM-dd。但我想設置日期格式,如“2019年6月1日”。日期+月份的前3個字母+年份。
我如何才能做到這一點?有沒有一種簡單的方法/方法/類,或者我應該編寫我的自定義日期格式化程序方法?
推薦答案
java.time
不要使用Date
和SimpleDateFormat
。這些課程設計得很差,而且早就過時了,后者尤其出了名的麻煩。正如Jon Skeet所說,為了獲得更好的體驗,請轉到現代Java日期和時間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日
包括M
for Month的許多格式模式字母可以生成數字或文本,具體取決于您在格式模式字符串中輸入的字母數(DateTimeFormatter
和舊版SimpleDateFormat
都是如此)。因此MM
提供兩位數的月份數字,而MMM
提供月份縮寫(通常為三個字母,但在某些語言中可能更長或更短)。
如果您現在從舊版API獲取一個無法更改或不想升級的舊式Date
對象,您可以這樣轉換它:
Date accessExpiryDate = getFromLegacyApi();
LocalDate ld = accessExpiryDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
其余部分和以前一樣。現在,您已經開始使用現代API,并且可以按照自己的步調向這個方向遷移代碼庫。
鏈接:Oracle tutorial: Date Time說明如何使用java.time。
這篇關于如何在Java中將簡單的日期格式化程序格式化為dd-3字母月-yyyy?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,