2015-11-28 58 views
-1

我已經/日期所存儲的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的日期格式,並顯示在控制檯上。

+2

在發佈問題前做一些分析。在互聯網上有很多例子 – Rehman

+0

@Raheman同意你在java中有更多簡單日期格式的例子 –

+0

@Rehman你可以將它標記爲一個副本..在這個例子中,你也需要一些分析..而不是粗魯地說些什麼。 –

回答

0

的過程是一個兩個步驟的過程:

  • 使用的DateFormat
  • parse方法轉換的StringDate使用DateFormat的方法格式與期望的轉換的Date到新String格式

使用SimpleDateFormat具體類。請參閱文檔以瞭解所需的模式。

+0

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)。 –

0

嘗試用每個預期的格式

當你擁有的各種格式輸入解析,如果這些格式是互斥的(不是曖昧彼此),只需嘗試解析每個已知的可能格式,直到一個工作。當解析嘗試失敗時,捕獲拋出的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…方法而不是指定特定的格式。

ISO 8601

就個人而言,我不建議人們使用兩位數的年份。這不會導致混淆與月份和日期模糊不清。內存是足夠便宜,而且屏幕夠大,我們可以輕鬆負擔的點點像素,支持4位數年的奢侈品。

另外,還要考慮完全避免你的模式。對於數據交換,僅使用標準ISO 8601格式。對於迄今爲止,只有這將是YYYY-MM-DD,例如2017-01-23


關於java。時間

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,YearQuartermore