2014-03-05 145 views
0

嗨,我想打印在android textview中的「星期一23日」格式的日期,我也想打印前幾天。例如:「4月22日星期日」,「4月21日星期六」。我發現了很多,但無法獲得任何能以相同格式工作的東西。提前Thanx。以特定格式打印java日期

+2

你的問題建議你已經試過* *的東西 - 所以請告訴我們,你已經嘗試什麼,發生了什麼事。你卡在哪裏?我*懷疑*它與序數部分(「rd」,「st」,「nd」,「th」等) - 這很難在所有語言環境中正確地獲取。其餘的應該是合理簡單的。 –

+0

是的,如何獲得序數部分..我已經嘗試過現在字符串month_name = calendar.getDisplayName(Calendar.MONTH,Calendar.SHORT,Locale.getDefault()); // Locale.US); String day_name = calendar.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.SHORT,Locale.getDefault()); // Locale.US);正如@vinay maneti所暗示的那樣。它的工作原理 – Sydroid

+0

@Sydroid - 如果這個答案適合你,那就繼續接受吧。 :)不要在這裏發佈代碼作爲評論。 – SudoRahul

回答

3

看看到: SimpleDateFormat

PS: 要回答喬恩斯基特問題:

private static final String DATE_FORMAT_ND = "EEE d'nd' MMMM"; 
private static final String DATE_FORMAT_RD = "EEE d'rd' MMMM"; 
private static final String DATE_FORMAT_ST = "EEE d'st' MMMM"; 
private static final String DATE_FORMAT_TH = "EEE d'th' MMMM"; 
private static final String DATE_DAY_NUMBER = "d"; 

public static String FormatDate(Date date_) 
{ 
    String    format   = null; 
    SimpleDateFormat dayNumberFormat = new SimpleDateFormat(DATE_DAY_NUMBER); 
    String    daySource  = dayNumberFormat.format(date_); 
    int     day    = Integer.parseInt(daySource); 

    switch(day) 
    { 
    case 1: 
    case 21: 
    case 31: 
     format = DATE_FORMAT_ST; 
     break; 

    case 2: 
    case 22: 
     format = DATE_FORMAT_ND; 
     break; 

    case 3: 
    case 23: 
     format = DATE_FORMAT_RD; 
     break; 

    case 4: 
    case 24: 
    case 5: 
    case 25: 
    case 6: 
    case 26: 
    case 7: 
    case 27: 
    case 8: 
    case 28: 
    case 9: 
    case 29: 
    case 10: 
    case 30: 
     format = DATE_FORMAT_TH; 
     break; 

    } 

    SimpleDateFormat dateFormat = new SimpleDateFormat(format); 
    String    result  = dateFormat.format(date_); 

    return result; 

} 

只有簡單的日期格式和編碼的一點點...

對於昨天的日期這樣調用它: - date.setText(FormatDate(new Date(new Date()。getTime() - 86400000)));

+0

這將如何產生序數部分(「nd」等)?我不認爲*有什麼會自動做到的。 –

+0

再次查看答案......但是從我的角度來看,這個資源可以用來編寫這段代碼的人沒有任何問題...... – Maxim

+0

對,這好多了 - 它實際上回答了問題。雖然這可能值得明確指出這隻適用於英語。 (我會在構造'SimpleDateFormat'時指定。) –

1

你可以試試這個:

DateFormat format = new SimpleDateFormat("EEEE d MMMM yyyy"); 
System.out.println(format.format(new Date())); 

或檢查出這個Human Friendly dates

+0

這不包括序數部分,這是棘手的一點。 –