Android将DatePicker设置为特定日期

时间:2013-08-03 00:38:47

标签: android android-datepicker

我有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中获取真实月份; ?

4 个答案:

答案 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);
}