web-dev-qa-db-fra.com

Android: format de date dans une chaîne

J'ai un problème pour trier la date à cause du format de ces dates.

J'obtiens la date:

final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

Et je construis une chaîne avec ces valeurs.

dateRappDB = (new StringBuilder()
   .append(mYear).append(".")
   .append(mMonth + 1).append(".")
   .append(mDay).append(" ")).toString();

Le problème est que si le mois est par exemple février, la valeur mMonth est 2. Ainsi, les dates avec des mois comme octobre (10) viennent avant dans ma liste.

Ce dont j'ai besoin, c'est que le mois et le jour soient formatés comme MM et jj. Mais je ne sais pas comment faire dans mon cas.

MODIFIER :

J'ai résolu le problème en utilisant un DateFormat comme dit ci-dessus.

J'ai remplacé ceci:

dateRappDB = (new StringBuilder()
  .append(mYear).append(".")
  .append(mMonth + 1).append(".")
  .append(mDay).append(" ")).toString();

Par ça :

Date date = new Date(mYear - 1900, mMonth, mDay);
dateFacDB = DateFormat.format("yyyy.MM.dd", date).toString();

Et il fonctionne. Merci à tous pour votre aide :)

19
HerrM

voici un moyen simple de convertir Date en chaîne:

SimpleDateFormat simpleDate = new SimpleDateFormat("dd/MM/yyyy");

String strDt = simpleDate.format(dt);

24
Vinayak
 Calendar calendar = Calendar.getInstance();
 Date now = calendar.getTime();   
 String timestamp = simpleDateFormat.format(now);

Ceux-ci pourraient être utiles

SimpleDateFormat simpleDateFormat = 
   new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ");

ce format est égal à -> "2016-01-01T09: 30: 00.000000 + 01: 00"

SimpleDateFormat simpleDateFormat = 
   new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");

ce format est égal à -> "2016-06-01T09: 30: 00 + 01: 00"

13
THZ

Vous devez trier les dates, pas les chaînes. De plus, avez-vous entendu parler de DateFormat ? Il fait tout ce qui vous accompagne.

4
ernazm

voici l'exemple du format de date

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date date = new Date();

System.out.println("format 1 " + sdf.format(date));

sdf.applyPattern("E MMM dd yyyy");
System.out.println("format 2 " + sdf.format(date));
2
Pratik

Si je comprends votre problème, vous créez une liste de dates et comme ce sont des chaînes, elles sont organisées dans un ordre de dictionnaire par numéro, ce qui signifie que vous obtenez octobre avant février (10 avant 2).

Si j'étais vous, je stockerais mes résultats dans un conteneur où je contrôle le point d'insertion (comme une liste de tableaux) ou où je peux contrôler l'algorithme de tri.

0
Kheldar