Androidのedittextから日付を取得しようとしましたが、コードが間違ったテキストを返します。
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">
EditTextに「23-08-2013」というテキストを書くと、コードは「5-7-113-abcd」を返します。なにが問題ですか? EditTextから正しい日付を取得するにはどうすればよいですか?
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
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);
Android docは常に最良のリファレンスです。ここに、Calendardocページのリンクがあります。
http://developer.Android.com/reference/Java/util/Calendar.html