我已經/日期所存儲的DD/MM格式如下字符串變量YY是英國格式定製Java中的日期格式是在特定的順序
String s= "04-MAR-15"
String t ="04/03/15"
String p ="04/03/2015"
String w ="04-03-2015"
現在我想他們的轉換在DD/MM/YYYY格式格式, 請指教我如何轉換自己的格式,通過簡單的Java的日期格式,並顯示在控制檯上。
我已經/日期所存儲的DD/MM格式如下字符串變量YY是英國格式定製Java中的日期格式是在特定的順序
String s= "04-MAR-15"
String t ="04/03/15"
String p ="04/03/2015"
String w ="04-03-2015"
現在我想他們的轉換在DD/MM/YYYY格式格式, 請指教我如何轉換自己的格式,通過簡單的Java的日期格式,並顯示在控制檯上。
的過程是一個兩個步驟的過程:
DateFormat
parse
方法轉換的String
到Date
使用DateFormat
的方法格式與期望的轉換的Date
到新String
格式使用SimpleDateFormat
具體類。請參閱文檔以瞭解所需的模式。
FYI ,諸如['java.util.Date'](https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)之類的麻煩的舊日期時間類,['java .util.Calendar'](https://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html)和'java.text.SimpleTextFormat'現在是[legacy](https: //en.wikipedia.org/wiki/Legacy_system),由[java.time]代替(https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)類。請參見[Oracle教程](https://docs.oracle.com/javase/tutorial/datetime/TOC.html)。 –
當你擁有的各種格式輸入解析,如果這些格式是互斥的(不是曖昧彼此),只需嘗試解析每個已知的可能格式,直到一個工作。當解析嘗試失敗時,捕獲拋出的Exception並嘗試使用下一個格式進行解析。
有關解析字符串轉換成日期,唯一對象的詳細信息,請參閱How can I change the date format in Java?許多Stack Overflow上已經取得其他職位。這是一個簡短的代碼示例。
首先,界定和收集一系列格式化對每項預期格式。
Locale locale = Locale.UK ;
List<DateTimeFormatter> formatters = new ArrayList<>(4);
formatters.add(DateTimeFormatter.ofPattern("dd-MMM-uu" , locale)) ;
formatters.add(DateTimeFormatter.ofPattern("dd-MM-uu" , locale)) ;
formatters.add(DateTimeFormatter.ofPattern("dd/MM/uuuu" , locale)) ;
formatters.add(DateTimeFormatter.ofPattern("dd-MM-uuuu" , locale)) ;
嘗試每個格式化程序,直到一個成功。
LocalDate ld = null ;
for(DateTimeFormatter f : formatters) {
try{
ld = LocalDate.parse(input , f);
break ; // End this 'for' loop. We succeeded in parsing, so no need to try more formatters.
} catch (DateTimeParseException e) {
// Swallow this exception as we expect it when trying a series of formatters.
}
}
測試,看看是否所有的格式化無法解析。這意味着我們收到了意外格式的輸入,一個錯誤情況。
if(null == ld) { // All the formatters were tried but failed.
… // Deal with unexpected input.
}
使用DateTimeFormatter
生成一個新的字符串作爲輸出。考慮使用ofLocalized…
方法而不是指定特定的格式。
就個人而言,我不建議人們使用兩位數的年份。這不會導致混淆與月份和日期模糊不清。內存是足夠便宜,而且屏幕夠大,我們可以輕鬆負擔的點點像素,支持4位數年的奢侈品。
另外,還要考慮完全避免你的模式。對於數據交換,僅使用標準ISO 8601格式。對於迄今爲止,只有這將是YYYY-MM-DD,例如2017-01-23
。
的java.time框架是建立在Java 8和更高版本。這些類取代了日期時間類legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time項目現在位於maintenance mode,建議遷移到java.time類。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310。
從何處獲取java.time類?
的ThreeTen-Extra項目與其他類擴展java.time。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval
,YearWeek
,YearQuarter
和more。
在發佈問題前做一些分析。在互聯網上有很多例子 – Rehman
@Raheman同意你在java中有更多簡單日期格式的例子 –
@Rehman你可以將它標記爲一個副本..在這個例子中,你也需要一些分析..而不是粗魯地說些什麼。 –