Je recherche la meilleure façon de renseigner une plage de dates dans ma vue de recyclage. Pour clarifier, je veux récupérer toutes les dates de la date actuelle aux sept prochains jours, comme si aujourd'hui est le 29-07-2020 Je veux lister toutes les dates du 29-07-2020 au 04-07-2020. Maintenant, dans mon recycleur, je veux obtenir la date du jour et le nom du mois. J'ai essayé le code ci-dessous et il répertorie les dates comme je le souhaite, mais je ne sais pas comment obtenir la date et le mois individuellement.
List<String> dateList = new ArrayList<String>(); Calendar calendar = Calendar.getInstance(); for (int i=0; i<31; i++) { calendar.add(Calendar.DATE, 1); SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); dateList.add(curFormater.format(calendar.getTime())); Log.i("Date" + i , dateList.get(i)); }
3 Réponses :
Vous devriez probablement envisager https://developer.android. com / reference / java / util / Calendar # get (int) et obtenez le mois comme ceci:
calendar.get(Calendar.MONTH)
ou le jour du mois comme celui-ci:
calendar.get(Calendar.DAY_OF_MONTH)
Modifiez le format de la date en modifiant la chaîne que vous passez à SimpleDateFormat
.
Pour afficher uniquement la date et le mois, vous pouvez essayer:
SimpleDateFormat curFormater = new SimpleDateFormat("dd MMMM");
En savoir plus sur le formatage de la date ici
Je vous recommande de passer de l'ancienne API date-heure obsolète à API de date-heure moderne .
Monday, August Tuesday, August Wednesday, August Thursday, August Friday, August Saturday, August Sunday, August
Sortie:
import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; public class Main { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); List<String> dateList = new ArrayList<>(); // Define the format for only day-name and month-name SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM"); // Iterate 7-times starting today with date incrementing by 1 after each iteration for (int i = 1; i <= 7; i++) { dateList.add(curFormater.format(calendar.getTime())); calendar.add(Calendar.DATE, 1); } // Display the content of dateList dateList.forEach(System.out::println); } }
Si la version de votre Android n'est pas encore compatible avec Java-8, vous pouvez effectuer un backport en utilisant ThreeTen-Backport a >. Vous pouvez également avoir besoin d ' d'aide pour le configurer .
Cependant, si vous souhaitez vous en tenir à l'ancienne API date-heure, procédez comme suit:
Monday, August Tuesday, August Wednesday, August Thursday, August Friday, August Saturday, August Sunday, August
Sortie: p >
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { LocalDate today = LocalDate.now();// Same as LocalDate.now(ZoneId.systemDefault()); // I suggest you use the following variant and apply the required time-zone // LocalDate today=LocalDate.now(ZoneId.of("Etc/UTC")); List<String> dateList = new ArrayList<String>(); // Define the format DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM"); // Iterate 7-times starting today with date incrementing by 1 after each iteration for (LocalDate date = today; date.isBefore(today.plusDays(7)); date = date.plusDays(1)) { dateList.add(date.format(formatter)); } // Display the content of dateList dateList.forEach(System.out::println); } }