DatePicker 显示从 0 开始的月份值
Posted
技术标签:
【中文标题】DatePicker 显示从 0 开始的月份值【英文标题】:DatePicker showing month value starting from 0 【发布时间】:2018-07-04 07:37:49 【问题描述】:我在一个activity
中使用了两个datepickers
,一个用于start date
,一个用于end date
,每当我选择月份时,它都会显示错误的数字。我尝试将+1
添加到月份值,但由于有两个datepickers
,我们必须跳过start date
之前的几天进行选择,所以它不起作用。代码如下:
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog;
datePickerDialog = new DatePickerDialog(getActivity(), this, year,
month, day);
return datePickerDialog;
public void onDateSet(DatePicker view, int year, int month, int day)
// Do something with the date chosen by the user
cval_from.setText(day + "/" + month + "/" + year);
public static class ToDatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener
// Calendar startDateCalendar=Calendar.getInstance();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
// Use the current date as the default date in the picker
String getfromdate = cval_from.getText().toString().trim();
String getfrom[] = getfromdate.split("/");
int year, month, day;
year = Integer.parseInt(getfrom[2]);
month = Integer.parseInt(getfrom[1]);
day = Integer.parseInt(getfrom[0]);
final Calendar c = Calendar.getInstance();
c.set(year, month, day + 1);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
return datePickerDialog;
public void onDateSet(DatePicker view, int year, int month, int day)
cval_to.setText(day + "/" + month + "/" + year);
这里,cval_from
是start date
和cval_to
是end date
,现在如果我在cval_from
中添加month+1
,那么cval_to
的日期选择从下个月开始。例如,如果我为cval_from
选择26/1/2018
,我必须从27/1/2018
开始选择cval_to
。整个月被跳过。
谁能帮忙?
【问题讨论】:
看到这个***.com/questions/4467816/… @jitendrapurohit,已经看过了。但这没有帮助 【参考方案1】:根据developer.android.com,月份范围为0-11。
所以你需要将它增加 1。
public void onDateSet(DatePicker view, int year, int month, int day)
int selectedMonth = month+1;
cval_to.setText(day + "/" + selectedMonth + "/" + year);
【讨论】:
【参考方案2】:当您使用要在 DatePicker 中初始设置的方法中的开始日期发送日期以及结束日期并在单击时调用此方法时,您可以在不同的单击中使用两个日期选择器
void selectDate(int mDay ,int mMonth,int mYear)
DatePickerDialog datePickerDialog = new DatePickerDialog(this,R.style.mydatetheame,
new DatePickerDialog.OnDateSetListener()
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth)
tv_date.setText((monthOfYear + 1) + "/" + dayOfMonth + "/" + year);
, mYear, mMonth, mDay);
datePickerDialog.show();
当然,通过这种方法你会得到一个正确的月份。
【讨论】:
以上是关于DatePicker 显示从 0 开始的月份值的主要内容,如果未能解决你的问题,请参考以下文章
Bootstrap Datepicker - 动态更改格式 - 设置月份名称获取月份值
Jquery datepicker下拉列表显示当前日期而不是所选日期
如何使 ngx-bootstrap datepicker 只能选择和显示月份和年份?