2013-07-16 12 views
6

Próbuję pobrać datę z edytora tekstu w systemie Android, ale kod zwraca nieprawidłowy tekst.Data od EditText

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

kod XML:

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

Kiedy piszę tekst "23-08-2013" w EditText, powrotu kodem "5-7-113-abcd". Co jest nie tak? Jak mogę uzyskać poprawną datę z EditText?

Odpowiedz

7

getDay() zwraca dzień tygodnia, więc jest to błędne. Użyj getDate().

getMonth() rozpoczyna się od zera, więc musisz dodać 1 do niego.

getYear() zwraca wartość, która jest wynikiem odjęcia 1900 od roku, więc musisz dodać 1900 do niego.

abcd - dobrze, jesteś wyraźnie dodając, że do końca łańcucha więc żadnych niespodzianek tam :)

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

Wszystkie one są jednak przestarzałe i naprawdę należy użyć Calendar zamiast.

Edit: szybkie przykładem Calendar

Calendar cal = Calendar.getInstance(); 
cal.setTime(myDate); 
cal.get(Calendar.DAY_OF_MONTH); // and so on 
+0

Dziękuję :) Jak mogę używać Calenda to zrobić? Próbowałem pobrać datę z instancji Kalendarza, ale poprawki były nieprawidłowe. –

+0

Widzę moją odpowiedź, właśnie ją edytowałem. –

+0

Cóż, nie jestem pewien, co próbujesz zrobić, ponieważ w twoim przykładzie wydajesz się konwertować na bieżąco tylko po to, aby przekonwertować dokładnie ten sam ciąg znaków. Użyj kalendarza do obliczeń obejmujących daty. W każdym razie, nadzieję, że pomaga. –

2

Proszę don `t bój się spojrzeć w dokumentacji Java. Te metody są przestarzałe. (I btw używasz niewłaściwych metod coraz wartości) Aplikacja Kalendarz:

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); 
+0

Nie można bezpośrednio utworzyć kalendarza. Zamiast tego użyj Calendar.getInstance(). –

+0

@JohnLindal dzięki, poprawiono odpowiedź –

0

Android doc jest zawsze najlepszym odniesienia. tutaj jest ogniwem strony Kalendarz doc:

http://developer.android.com/reference/java/util/Calendar.html

+1

Chociaż może to teoretycznie odpowiedzieć na pytanie, [byłoby lepiej] (// meta.stackoverflow.com/q/8259), aby uwzględnić istotne części odpowiedzi tutaj, i podać link na przykład. –