1
votes

Comment charger un tableau de dates à partir d'une plage donnée?

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));
    }


0 commentaires

3 Réponses :


0
votes

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)


0 commentaires

0
votes

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


0 commentaires

0
votes

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);
    }
}


0 commentaires