日、月、年の値を含む3つの文字列があります。例えば:
String mday = "02";
String mmonth="07";
String myear="2013";
アクティビティのDatePickerを上記の日付から1か月に設定する必要があります。 mmonth値に1を加算するだけではありません... 31日目の場合、無効な日付になってしまいます。したがって、日付をインクリメントする方法(有効な方法)と、その値でDatePickerを設定する方法が必要です。 int値を使用したdatePickerの設定は、次のように行われることを認識しています。
DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker1);
datepicker.init(iYear, iMonth, iDay, null);
// where iYear,iMonth and iDay are integers
しかし、DATEを1か月増やした日、月、年の整数値を取得するにはどうすればよいですか?
それで、増分された日付(整数)の最初の値(文字列)と最後の値の間で、私がしなければならないステップは何ですか?
カレンダーを使わなければならないと思います。したがって、私のコードは次のようになります。
Integer iYear, iMonth, iDay = 0;
String mday = "02";
String mmonth="07";
String myear="2013";
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(myear), Integer.parseInt(mmonth), Integer.parseInt(mday));
cal.add(Calendar.MONTH, 1);
// here I should get the values from cal inside the iYear, iMonth, iDay, but I do not seem to succeed.
DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker1);
datepicker.init(iYear, iMonth, iDay, null);
私が行った場合:
datepicker.init(cal.YEAR, cal.MONTH, cal.DATE, null);
その後、アプリケーションがクラッシュします。私は何をすべきか?これを月の日付で増分してDatePickerに設定するにはどうすればよいですか?
更新 テストコードを次のように変更しました。
Calendar cal = Calendar.getInstance();
cal.set(2013, 05, 23);
cal.add(Calendar.MONTH, 1);
int xxday = cal.get(Calendar.DATE);
int xxmonth = cal.get(Calendar.MONTH);
int xxyear = cal.get(Calendar.YEAR);
datepicker.init(xxyear, xxmonth, xxday, null);
しかし今、datePickerは希望の日付から1か月ではなく、今から1か月に設定されています。したがって、(2013-06-23)の代わりに(2013-09-23)があります。私はそれが原因だと思います
int xxmonth = cal.get(Calendar.MONTH);
カレンダーのカレンダーから実際の月を取得するにはどうすればよいですか。 ?
DatePicker
クラスにはメソッドupdateDate(year, month, dayOfMonth)
があり、以下に示すように、このメソッドを使用してDatePicker
に日付を設定できます。
DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
datePicker.updateDate(2016, 5, 22);
暦月は0ベースです。つまり、07月は8月です。
日付ピッカーがある場合は、次のコードを使用してカレンダーオブジェクトを初期化します。
Calendar calendar = new GregorianCalendar(datePicker.getYear(),
datePicker.getMonth(),
datePicker.getDayOfMonth());
それ以外の場合は、コンストラクターで日付部分をハードコーディングします
このtutoを使用してDatePickerDialogを作成してから、DatePickerDialog内でこのコードを使用してください https://developer.Android.com/guide/topics/ui/dialogs.html
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String mday = "02";
String mmonth="07";
String myear="2013";
//convert them to int
int mDay=Integer.valueOf(mday);
int mMonth=Integer.valueOf(mmonth);
int mYear=Integer.valueOf(myear);
return new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
String d=convertToCompletDate(i2,i1,i);
mListener.onDatePicked(d);
}
},mYear,mMonth,mDay);
}