2012-03-11 1 views
-1

Lorsque je crée un Date à partir de l'analyse d'un String et que j'accède au jour du mois, j'obtiens la mauvaise valeur.Comment obtenir le jour du mois à partir d'une chaîne formatée?

Date datearr = null; 
DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy"); 
String dataa = "17-03-2012"; 
try { 
    datearr = df1.parse(dataa); 
} catch (ParseException e) { 
    Toast.makeText(this, "err", 1000).show(); 
} 

int DPDMonth = datearr.getMonth() + 1; 
int DPDDay = datearr.getDay(); 
int DPDYear = datearr.getYear() + 1900; 

System.out.println(Integer.toString(DPDDay)+"-"+Integer.toString(DPDMonth)+"-"+Integer.toString(DPDYear)); 

Pourquoi ai-je 0 au lieu de 17?

03-11 10:24:44.286: I/System.out(2978): 0-3-2012 
+3

Lisez le javadoc des méthodes que vous utilisez, notez leur avertissement de dépréciation et remplacez-le par le code suggéré par la documentation. Et aussi, pensez à ce qui se passerait si vous aviez une exception ParseException, lorsque le code 'datearr.getMonth()' est exécuté. –

+2

Et s'il vous plaît utiliser les conventions java liées à la dénomination des variables ... il est très ennuyeux d'essayer de lire le code et d'avoir une variable en surbrillance en tant que classe. – Marcelo

+0

Désolé, c'est ma première publication ici. –

Répondre

1

Voici un extrait du ne pas utiliser plus des méthodes obsolètes, des correctifs de nommage des problèmes et simplifie la sortie.

Date datearr = null; 
    DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy"); 
    String dataa = "17-03-2012"; 
    try { 
     datearr = df1.parse(dataa); 
    } catch (ParseException e) { 
     Toast.makeText(this, "err", 1000).show(); 
     return; // do not continue in case of a parse problem!! 
    } 

    // "convert" the Date instance to a Calendar 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(datearr); 

    // use the Calendar the get the fields 
    int dPDMonth = cal.get(Calendar.MONTH)+1; 
    int dPDDay = cal.get(Calendar.DAY_OF_MONTH); 
    int dPDYear = cal.get(Calendar.YEAR); 

    // simplified output - no need to create strings 
    System.out.println(dPDDay+"-"+dPDMonth+"-"+dPDYear); 
0

Vous devez utiliser

int DPDDay = datearr.getDate(); 

getDay() retour par jour en semaine

+0

Zoon Nooz, thx! Désolé les gars, tous à cause de mon insouciance –

0

Ce genre de travail est beaucoup plus facile lors de l'utilisation de la bibliothèque tiers, Joda-Time 2.3.

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

String dateString = "17-03-2012"; 

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy"); 
DateTime dateTime = formatter.parseDateTime(dateString).withTimeAtStartOfDay(); 

int dayOfMonth = dateTime.getDayOfMonth(); 
Questions connexes