2012-05-27 89 views
1

我有一些不同的日期格式要解析,但我無法通過SimpleDateFormat識別它們。任何人可以幫助我找到模式該日期:某些字符串的DateFormat模式

  • 1892年6月
  • 9 1915年
  • 月335
  • 1768年2月12日

    五月
  • 9月23日63 bc
  • 8月19日的廣告14

感謝

+1

http://stackoverflow.com/q/3850784/1140748 –

+1

第一次我遇到一個問題,談到轉換BC時間指定的時間+1 – mprabhat

+0

好吧,他們都不簡單日期格式1892年7月6日將是像「d MMMM yyyy」。你很樂意與BC一起玩,並且是1768-02-12 12月2日或12月2日 –

回答

1

您只需提供您希望您的日期可以被解析並通過它們運行,找到第一個匹配的模式的可能性。

Run solution.

+0

你是最簡單有效的解決方案:)我的問題是,我不使用語言環境..所以它被格式化爲意大利語,我認爲:) – DX89B

+1

非英國/美國公民的常見問題,很樂意提供幫助。 – JMelnik

1

Joda通常更好,如果你必須使用多種格式進行解析。例如,

 private static DateTimeFormatter dateFormatter; 
     String[] validDateFormats = new String[] { "dd-MMM-yyyy HH:mm:ss", 
       "yyyy-MM-dd HH:mm:ss.SSS" }; 
     DateTimeParser[] parsers = new DateTimeParser[validDateFormats.length]; 
     for (int i = 0; i < validDateFormats.length; ++i) { 
      parsers[i] = DateTimeFormat.forPattern(validDateFormats[i]) 
        .getParser(); 
     } 
     dateFormatter = new DateTimeFormatterBuilder().append(null, parsers) 
       .toFormatter().withZone(DateTimeZone.UTC); 

現在這個dateFormatter將正確解析,如果輸入相匹配的任何格式:

 inputDate = dateFormatter.parseDateTime(dateStr); 
     DateTimeFormatter outputFormat = DateTimeFormat 
       .forPattern("yyyy/MM/dd"); 
     String outputString = inputDate.toString(outputFormat); 

格式字符串可以從這裏擡頭:http://joda-time.sourceforge.net/api-release/org/joda/time/format/DateTimeFormat.html

0

嘗試這些

27日,2012:

System.out.println(new SimpleDateFormat("d-MMM-YYYY").format(new Date()));

27-05-2012:

System.out.println(new SimpleDateFormat("d-MM-YYYY").format(new Date())); 

27-05-12:

System.out.println(new SimpleDateFormat("dd-MM-YY").format(new Date()));