11

我有 3 个包含日、月和年值的字符串。例如:

String mday = "02";
String mmonth="07";
String myear="2013";

我需要将我活动中的 DatePicker 设置为从上述日期开始的一个月。我并不是说只在 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 一个月的日、月和年的整数值?

那么在递增日期(整数)的第一个值(字符串)和最终值之间,我必须采取哪些步骤?

我想我必须使用日历。所以我的代码应该是这样的:

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 设置为从现在开始的一个月,而不是从想要的日期开始的一个月所以而不是(2013-06-23)我有(2013-09-23)。我想这是因为

    int xxmonth = cal.get(Calendar.MONTH);

如何从日历中获取真实月份;?

4

4 回答 4

25

DatePicker类有一个方法updateDate(year, month, dayOfMonth),您可以使用它来设置日期,DatePicker如下所示:

DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
datePicker.updateDate(2016, 5, 22);
于 2015-03-16T09:54:53.523 回答
4

日历月从 0 开始。所以 07 月是 8 月。

于 2013-08-03T01:10:54.977 回答
2

如果您有日期选择器,请使用以下代码初始化日历对象:

Calendar calendar = new GregorianCalendar(datePicker.getYear(),
                               datePicker.getMonth(),
                               datePicker.getDayOfMonth());

否则在构造函数中硬编码日期部分

于 2014-06-22T05:33:25.613 回答
2

使用此教程创建您的 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);
}
于 2017-12-04T16:33:17.030 回答