Wie setze ich das maximale Datum im Datepicker-Dialog in Android?
Lesezeit: 5 Minuten
In meiner Anwendung verwende ich die Datumsauswahl, um das Datum festzulegen. Ich möchte das maximale Datum der Datumsauswahl als heutiges Datum gemäß dem Systemdatum festlegen. Ich weiß nicht, wie ich das maximale Datum der Datumsauswahl als heutiges Datum festlegen soll. Kann mir jemand helfen? um dieses Problem zu lösen.
Meine Datumsauswahl-Codierung lautet:
private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;
final Calendar c = Calendar.getInstance();
pYear = c.get(Calendar.YEAR);
pMonth = c.get(Calendar.MONTH);
pDay = c.get(Calendar.DAY_OF_MONTH);
// Date picker
public Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
pYear = year;
pMonth = monthOfYear;
pDay = dayOfMonth;
e_dob.setText(new StringBuilder()
// to set date in editext
.append(pDay).append("https://stackoverflow.com/").append(pMonth + 1)
.append("https://stackoverflow.com/").append(pYear).append(" "));
}
};
return new DatePickerDialog(this, pDateSetListener, pYear, pMonth,
pDay);
}
return null;
}
Nach dem Einstellen der setMaxDate von datePicker die setMaxDate ist immer markiert und ausgewählt, hier ist die Bild
– hasnain_ahmad
15. Juni 2017 um 4:41 Uhr
@hasnain_ahmad Ja das ist mir auch aufgefallen, ich habe noch keine Lösung gefunden.
– Nikolaus
30. Dezember 2017 um 2:57 Uhr
ugali weich
Holen Sie sich das heutige Datum (& Uhrzeit) und verwenden Sie sie als maximales Datum.
Calendar c = Calendar.getInstance();
c.set(2017, 0, 1);//Year,Mounth -1,Day
your_date_picker.setMaxDate(c.getTimeInMillis());
AUCH WIR KÖNNEN DAS TUN (überprüfen Sie diese Stackoverflow-Antwort für System.currentTimeMillis() vs. Calendar-Methode)
long now = System.currentTimeMillis() - 1000;
dp_time.setMinDate(now);
dp_time.setMaxDate(now+(1000*60*60*24*7)); //After 7 Days from Now
Bitte fügen Sie eine Erklärung hinzu, was der Code tut.
– Saifur
7. März 2015 um 6:07 Uhr
Dies ist die perfekte und tatsächliche Antwort, um ein maximales Datum festzulegen
– Anand Savjani
29. Januar 2016 um 5:22 Uhr
Ich habe nach einem Mindestdatum gesucht, das auch funktioniert. Danke!
– superUser
8. Mai 2017 um 14:04 Uhr
Sie können versuchen, diese Zeile zu ersetzen:
return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
Von denen:
DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
DatePicker datePicker = dpDialog.getDatePicker();
Calendar calendar = Calendar.getInstance();//get the current day
datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date
return dpDialog;
Sunil
Versuche dies
Ich habe zu viele Lösungen ausprobiert, aber keine davon hat funktioniert. Nachdem ich meinen halben Tag verschwendet hatte, habe ich endlich eine Lösung gefunden.
Dieser Code zeigt Ihnen einfach einen DatePickerDialog mit minimalem und maximalem Datum, Monat und Jahr, was immer Sie wollen, ändern Sie es einfach.
final Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, (month+1));
calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
String myFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
your_edittext.setText(sdf.format(calendar.getTime()));
}
},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());// TODO: used to hide previous date,month and year
calendar.add(Calendar.YEAR, 0);
dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());// TODO: used to hide future date,month and year
dialog.show();
Ausgabe:-
Deaktivieren Sie den vorherigen und zukünftigen Kalender
private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;
/**inside oncreate */
final Calendar c = Calendar.getInstance();
pYear= c.get(Calendar.YEAR);
pMonth = c.get(Calendar.MONTH);
pDay = c.get(Calendar.DAY_OF_MONTH);
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
mDateSetListener,
pYear, pMonth-1, pDay);
}
return null;
}
protected void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case DATE_DIALOG_ID:
((DatePickerDialog) dialog).updateDate(pYear, pMonth-1, pDay);
break;
}
}
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// write your code here to get the selected Date
}
};
versuch das es sollte funktionieren. Danke
Komal12
Verwenden Sie diesen Code direkt in der Hauptmethode, ich hoffe, er wird Ihnen helfen …