2013-07-03 4 views
1

Je date au format jj/mm/aaaa mais je veux analyser dans quelque chose comme 2 mai ou 5 Juin, je suis en mesure de l'analyser au 2 mai ou 5 Juin, mais je dois ajouter que nd ou e avec la date aussi Quelqu'un peut-il s'il vous plaît suggérer quelque chose en utilisant DateFormat ou SimpleDateFormat classe?Format de date Java (ou Android)

Edit: Un peu aperçu de ce que je l'ai déjà essayé: -

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

Jusqu'à présent .. 'nouvelle SimpleDateFormat ("dd mmm"), et' a également essayé regardant [ici] (http://docs.oracle .com/javase/7/docs/api/java/text/SimpleDateFormat.html) – d3m0li5h3r

+0

pouvez-vous s'il vous plaît fournir un peu de code? –

+0

Avoir un 'HashMap' qui contient' Date' comme clé et le suffixe de date par exemple st, nd comme 'valeur'. Et obtenir le suffixe approprié de 'Date' en tant que' Key' de 'HahMap'. Vous pouvez avoir seulement 10 entrées dans le 'Hashmap ' –

Répondre

6

Vous pouvez utiliser une méthode comme ceci: -

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

apprécie ton chemin mais j'ai besoin de quelque chose si c'est déjà dans l'API. Devrait pouvoir changer le format. – d3m0li5h3r

+0

Pourquoi ne vas-tu pas faire comme ça? – user1555863

+1

ok .. notre code a presque fonctionné pour moi .. vous pourriez vouloir enlever les signes = de 'si (n <= 1 || n > = 31)' – d3m0li5h3r

0

Je ne pense pas qu'il peut être fait par SimpleDateFormat. Mais voici la solution alternative pour atteindre le même.

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

vous devez le découper avec le "". comme ci-dessous:

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

La fonction de getDate est comme ci-dessous

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 est la réponse ce que vous voulez est. bonne chance

0

Il n'y a pas de fonction intégrée pour obtenir le format de date comme 1er ou 5ème .. nous devons ajouter manuellement le suffixe à une date .. Espérons que le code ci-dessous pourrait être utile pour vous.

public class 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())); 
} 

}