2013-07-03 113 views
1

我有日期DD/MM/YYYY格式,但我想分析它像月2日或6月5日 我能五月將其解析到2或6月5日,但我需要追加nd或th與日期 任何人都可以請建議一些使用DateFormatSimpleDateFormat類?日期格式

編輯: 什麼,我已經嘗試過小快照: -

Date d = Date.parse("20/6/2013"); 
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM"); 
String dateString = sdf.format(d); 
+0

到目前爲止..'新的SimpleDateFormat( 「DD MMM」);',也試圖尋找了[這裏](http://docs.oracle .com/javase/7/docs/api/java/text/SimpleDateFormat.html) – d3m0li5h3r

+0

請問你能提供一點代碼嗎? –

+0

有一個'HashMap',它包含'Date'作爲'key'和日期後綴,例如st,nd作爲'value'。並從'HahMap'中獲得'Date'的正確後綴作爲'Key'。您可以在'Hashmap' –

回答

6

您可以使用一些像這樣的方法: -

String getDaySuffix(final int n) { 
    if(n < 1 || n > 31) 
     return "Invalid date"; 
    if (n >= 11 && n <= 13) 
     return "th"; 

    switch (n % 10) { 
     case 1: return "st"; 
     case 2: return "nd"; 
     case 3: return "rd"; 
     default: return "th"; 
    } 
} 
+0

感謝你的方式,但我需要一些東西,如果它已經在API中。應該能夠改變格式。 – d3m0li5h3r

+0

你爲什麼不這樣做呢? – user1555863

+1

好吧..我的代碼幾乎爲我工作..你可能想要從'if(n <= 1 || n > = 31)'中刪除這些= – d3m0li5h3r

0

我不認爲它可以由SimpleDateFormat完成。但這是實現相同目標的替代解決方案。

static String[] suffixes = 
    // 0  1  2  3  4  5  6  7  8  9 
    { "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", 
    // 10 11 12 13 14 15 16 17 18 19 
     "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", 
    // 20 21 22 23 24 25 26 27 28 29 
     "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", 
    // 30 31 
     "th", "st" }; 

    Date date = new Date(); 
int day = Calendar.getInstance().setTime(date).get(Calendar.DAY_OF_MONTH); 
String dayStr = day + suffixes[day]; 
0

您需要將它與「」分開。如下圖所示:

Staring split[] = dateString .split[" "]; 
String date = split[0]; 
String suffix = getDate(Integer.parseInt(date)); 
String YourDesireString = date + suffix + " " + split[1]; 

GETDATE的功能如下

String getDate(final int n) { 
    if(n <= 1 || n >= 31) 
     return "Invalid date"; 
    if (n >= 11 && n <= 13) { 
     return "th"; 
    } 
    switch (n % 10) { 
     case 1: return "st"; 
     case 2: return "nd"; 
     case 3: return "rd"; 
     default: return "th"; 
    } 
} 

YourDesireString是你想要的答案是什麼。祝你好運

0

沒有內置的函數來獲取日期格式,如第1或第5 ..我們必須手動添加後綴到日期..希望下面的代碼可能對你有用。

公共類WorkWithDate {

private static String getCurrentDateInSpecificFormat(Calendar currentCalDate) { 
    String dayNumberSuffix = getDayNumberSuffix(currentCalDate.get(Calendar.DAY_OF_MONTH)); 
    DateFormat dateFormat = new SimpleDateFormat(" d'" + dayNumberSuffix + "' MMMM yyyy"); 
    return dateFormat.format(currentCalDate.getTime()); 
} 

private static String getDayNumberSuffix(int day) { 
    if (day >= 11 && day <= 13) { 
     return "th"; 
    } 
    switch (day % 10) { 
     case 1: 
      return "st"; 
     case 2: 
      return "nd"; 
     case 3: 
      return "rd"; 
     default: 
      return "th"; 
    } 
} 
public static void main(String [] args) throws ParseException { 
    System.out.println(getCurrentDateInSpecificFormat(Calendar.getInstance())); 
} 

}