it-roy-ru.com

Дата от EditText

Я пытаюсь получить дату из edittext в Android, но код возвращает неправильный текст.

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";

XML-код:

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

Когда я пишу текст «23-08-2013» в EditText, код возвращает «5-7-113-abcd». Что случилось? Как я могу получить правильную дату от EditText?

6
Adam N

getDay() возвращает день недели, так что это неправильно. Используйте getDate().

getMonth() начинается с нуля, поэтому вам нужно добавить 1 к нему.

getYear() возвращает значение, которое является результатом вычитания 1900 из года, поэтому вам нужно добавить к нему 1900.

abcd - ну, вы явно добавляете это в конец строки, так что никаких сюрпризов там нет :)

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

Все это устарело, и вы должны использовать вместо него Calendar.

Правка: Быстрый пример Calendar

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

Пожалуйста, не бойтесь смотреть документацию по Java. Эти методы устарели. (И кстати, вы используете неправильные методы для получения значений) Используйте календарь:

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

документация Android - всегда лучшая ссылка Вот ссылка на страницу документа календаря:

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

0
JúlioCézar