我有3个包含日,月和年值的字符串。例如:
String mday = "02";
String mmonth="07";
String myear="2013";
我需要将活动中的DatePicker设置为从上面的日期开始的一个月。我并不是说只是将1加到mmonth值......如果是第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的日,月和年的整数值一个月?
因此,在第一个值(字符串)和递增日期的最终值(整数)之间,我必须采取哪些步骤?
我认为我必须使用日历。 所以我的代码应该是这样的:
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设置为从NOW开始一个月而不是从想要的日期开始一个月而不是(2013-06-23)我有(2013-09-23)。我认为这是因为
int xxmonth = cal.get(Calendar.MONTH);
如何从Calendar cal中获取真实月份; ?
答案 0 :(得分:15)
DatePicker
课程有updateDate(year, month, dayOfMonth)
方法,您可以使用该方法在DatePicker
中设置日期,如下所示:
DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
datePicker.updateDate(2016, 5, 22);
答案 1 :(得分:4)
日历月份为0。所以07年是8月。
答案 2 :(得分:2)
如果您有日期选择器,请使用以下代码初始化日历对象:
Calendar calendar = new GregorianCalendar(datePicker.getYear(),
datePicker.getMonth(),
datePicker.getDayOfMonth());
否则硬编码构造函数中的日期部分
答案 3 :(得分:2)
使用此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);
}