J'essaie d'amener l'utilisateur à sélectionner deux dates, la date de début et la date de fin, indépendamment de ce que l'utilisateur sélectionne, je veux m'assurer que la date de début commence à la première date du mois et que la date de fin se termine par le dernière date du mois, soit 31 ou 30.
`enter code here`editTextPvcStartDate.setText(year + "-" + String.format("%02d",(monthOfYear + 1)) + "-" + String.format("%02d",dayOfMonth)); } }, year, month, day); mydate.show(); }
{
void selectStartDateForQtr()//DATEPICKER CONDITION { editTextPvcStartDate.setError(null); selectedDateCondition = ""; DatePickerDialog mydate; final Calendar regDate = Calendar.getInstance(); //int details = regDate.getTime(); int day = regDate.get(Calendar.DAY_OF_MONTH); int month = regDate.get(Calendar.MONTH); int year = regDate.get(Calendar.YEAR); // date picker dialog mydate = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
3 Réponses :
Dans votre fonction onDateSet, essayez de définir les valeurs dans un objet Calendar, puis utilisez les fonctions de celui-ci pour trouver votre maximum:
date selectedDate = Calendar.getInstance() selectedDate.set(year, monthOfYear, dayOfMonth) date startDate = selectedDate startDate.set(Calendar.DAY_OF_MONTH, 1) date endDate = selectedDate int lastDayOfMonth = endDate.getActualMaximum(Calendar.DAY_OF_MONTH) endDate.set(Calendar.DAY_OF_MONTH, lastDayOfMonth)
Vos variables startDate et endDate contiendront désormais le 1er de le mois et le dernier jour du mois, quelle que soit la taille du mois.
Essayez ce code pour obtenir la première et la dernière date du papillon sélectionné
//Change with selected date int iYear = 2020; int iMonth = Calendar.FEBRUARY; int iDay = 1; // Create a calendar object and set year and month Calendar mycal = new GregorianCalendar(iYear, iMonth, iDay); int monthLastDate = mycal.getActualMaximum(Calendar.DAY_OF_MONTH); int monthFirstDate = mycal.getActualMinimum(Calendar.DAY_OF_MONTH); Log.e("check_days","----"+monthLastDate+"----"+monthFirstDate);
Dans Android, nous pouvons obtenir la dernière date du mois de cette façon. Veuillez vérifier ce code:
LocalDate ld = datePicker.getValue(); Calendar c = Calendar.getInstance(); c.set(ld.getYear(), ld.getMonthValue() - 1, ld.getDayOfMonth()); Date date = c.getTime();
Sortie:
Today's Date = Fri Nov 29 05:17:02 UTC 2019 Last Date of the current month = 30
Modifié:
Par exemple
Calendar cal = Calendar.getInstance(); int res = cal.getActualMaximum(Calendar.DATE); Log.e(TAG, "Today's Date =", cal.getTime()); Log.e(TAG, "Last Date of the current month = ", res);
In Month commencera de 0 à 11, donc lorsque vous obtenez et ans. de la valeur Datepicker puis le mois décrémente 1 pour définir dans GregorianCalendar.Si vous avez un doute, veuillez demander.
J'espère que cela vous aidera ...!
cela fonctionne bien mais il n'affiche que la dernièreDate du mois en cours uniquement ... ce dont j'ai besoin est la dernière date du mois sélectionné dans la boîte de dialogue Datepicker
dernière date du mois soit 31 ou 30.
février?Faites un sélecteur de mois.