web-dev-qa-db-fra.com

Date de EditText

J'essaie d'obtenir la date d'edittext dans Android, mais le code retourne un texte erroné.

Code Java:

SimpleDateFormat df = new SimpleDateFormat("dd-MM-YYYY"); 
Java.util.Date myDate;
myDate = df.parse(editText1.getText().toString());
String myText = myDate.getDay() + "-" + myDate.getMonth() + "-" + myDate.getYear() + "abcd";

Code XML:

<EditText
                Android:id="@+id/editText1"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:ems="10"
                Android:inputType="date">

Lorsque j'écris le texte "23-08-2013" dans EditText, le code retourne "5-7-113-abcd". Qu'est-ce qui ne va pas? Comment puis-je obtenir la date correcte de EditText?

6
Adam N

getDay() renvoie le jour de la semaine, c'est donc faux. Utilisez getDate().

getMonth() commence à zéro, vous devez donc ajouter 1.

getYear() renvoie une valeur résultant de la soustraction de 1900 de l'année. Vous devez donc ajouter 1900.

abcd - eh bien, vous ajoutez explicitement cela à la fin de la chaîne, donc pas de surprises là-bas :)

SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
Date myDate;
try {
    myDate = df.parse(date);
    String myText = myDate.getDate() + "-" + (myDate.getMonth() + 1) + "-" + (1900 + myDate.getYear());
    Log.i(TAG, myText);
} catch (ParseException e) {
    e.printStackTrace();
}

Tous ces éléments sont toutefois déconseillés et vous devriez plutôt utiliser un Calendar à la place.

Edit: exemple rapide de Calendar

Calendar cal = Calendar.getInstance();
cal.setTime(myDate);
cal.get(Calendar.DAY_OF_MONTH); // and so on
8
Ken Wolf

S'il vous plaît, n'ayez pas peur de consulter la documentation Java. Ces méthodes sont obsolètes. (Et d'ailleurs, vous utilisez de mauvaises méthodes pour obtenir des valeurs) Utilisez le calendrier:

Calendar c = Calendar.getInstance();
c.setTime(myDate)
String dayOfMonth = c.get(Calendar.DAY_OF_MONTH);
String month = c.get(Calendar.MONTH);
String year = c.get(Calendar.YEAR);
2
Semyon Danilov

le doc Android est toujours la meilleure référence. voici un lien de la page de documentation de calendrier:

http://developer.Android.com/reference/Java/util/Calendar.html

0
JúlioCézar