[英]How Set Max & Min Date In WHEEL DatePicker In Android
In my application am trying DatePicker to set date.I want to set date picker Maximum date is as today date according to system date.i don't know how to set date picker maximum date as today date.May I know what is the correct way to achieve my objective?Maybe this question too basic, but i did't find any suitable solution.Please Help me out在我的应用程序中,我正在尝试使用DatePicker设置日期。我想根据系统日期将日期选择器的最大日期设置为今天的日期。我不知道如何将日期选择器的最大日期设置为今天的日期。我知道什么是正确的如何实现我的目标?也许这个问题太基本了,但我没有找到任何合适的解决方案。请帮帮我
Here is my code :这是我的代码:
public class UserDob extends Activity {
TextView tvDisplayDate;
DatePicker datePickerBirthday;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_dob);
ActionBar ab = getActionBar();
ab.setDisplayUseLogoEnabled(false);
ab.setDisplayShowHomeEnabled(true);
ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
ab.setCustomView(R.layout.actionbar);
ab.setDisplayHomeAsUpEnabled(true);
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));
ab.setBackgroundDrawable(colorDrawable);
datePickerBirthday=(DatePicker)findViewById(R.id.dpResult);
tvDisplayDate = (TextView)findViewById(R.id.textViewUserDate);
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= 11) {
datePickerBirthday.setCalendarViewShown(false);
}
SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
String dateStr = sdfDateTime.format(new Date(System.currentTimeMillis()));
String[] dateSplit = dateStr.split("-");
int currentYear = Integer.parseInt(dateSplit[0]);
int currentMonth = Integer.parseInt(dateSplit[1]);
int currentDay = Integer.parseInt(dateSplit[2]);
// to show date and day of week in the TextView
setHumanReadableDate(currentYear, currentMonth, currentDay);
// initialize date picker listener
// currentMonth - 1, because on the picker, 0 is January
datePickerBirthday.init(currentYear, currentMonth - 1, currentDay, birthdayListener);
}
// the date picker listener
OnDateChangedListener birthdayListener = new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker birthDayDatePicker,
int newYear, int newMonth, int newDay) {
try{
// currentMonth + 1, to retrieve proper month
setHumanReadableDate(newYear, newMonth + 1, newDay);
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
};
// show the user a better date format
public void setHumanReadableDate(int newYear, int newMonth, int newDay){
try {
String clickedDate = newYear + "-" + newMonth + "-" + newDay;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = sdf.parse(clickedDate);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SimpleDateFormat sdfDateTime = new SimpleDateFormat("MMMM dd, yyyy 'is' EEEE", Locale.US);
String dateStr = sdfDateTime.format(d);
tvDisplayDate.setText(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Above API 11 For min date you can use以上 API 11 对于最小日期,您可以使用
android:minDate="mm/dd/yyyy"
or setMinDate(long time)
For Max date对于最大日期
android:maxDate="mm/dd/yyyy" // In XML
setMaxDate(new Date().getTime());// Current time
if you are using API level above 11 then use setMaxDate
of DatePicker
to set mex date.如果您使用的 API 级别高于 11,则使用
DatePicker
setMaxDate
来设置 mex 日期。 otherwise create a custom DatePicker and override onDateSet
method, and apply your validation here like below否则创建一个自定义 DatePicker 并覆盖
onDateSet
方法,并在此处应用您的验证,如下所示
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Log.i(TAG, "onDateSet :which:");
Calendar cl = Calendar.getInstance();
cl.set(year, monthOfYear, dayOfMonth);
if(cl.before(Calendar.getInstance())){
this.mListener.onDateSet(view, year, monthOfYear, dayOfMonth);
}else {
Toast.makeText(mContext, "Please select any date before this.", Toast.LENGTH_SHORT).show();
return;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.