2014-03-05 147 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

这不包括序数部分,这是棘手的一点。 –