Je travaille sur un projet où l'exigence est d'avoir une date calculée comme étant le dernier vendredi d'un mois donné. Je pense avoir une solution qui n'utilise que du Java standard, mais je me demandais si quelqu'un connaissait quelque chose de plus concis ou efficace. Voici ce que je l'ai testé avec pour cette année:Recevez le dernier vendredi du mois en Java
for (int month = 0; month < 13; month++) {
GregorianCalendar d = new GregorianCalendar();
d.set(d.MONTH, month);
System.out.println("Last Week of Month in " + d.getDisplayName(d.MONTH, Calendar.LONG, Locale.ENGLISH) + ": " + d.getLeastMaximum(d.WEEK_OF_MONTH));
d.set(d.DAY_OF_WEEK, d.FRIDAY);
d.set(d.WEEK_OF_MONTH, d.getActualMaximum(d.WEEK_OF_MONTH));
while (d.get(d.MONTH) > month || d.get(d.MONTH) < month) {
d.add(d.WEEK_OF_MONTH, -1);
}
Date dt = d.getTime();
System.out.println("Last Friday of Last Week in " + d.getDisplayName(d.MONTH, Calendar.LONG, Locale.ENGLISH) + ": " + dt.toString());
}
Grande réponse, mais pourquoi utiliser le calendrier Gregorian concret plutôt que le calendrier abstrait retourné par Calendar.getInstance()? –
bonne réponse. semble être le plus court et le plus concis. Je modifierais à nouveau si je pouvais. – Randyaa
cal.get (Calendar.DAY_OF_WEEK)% 7 + 1; Le% 7 + 1 est complètement inutile ici. cal.get (Calendar.DAY_OF_WEEK) retournera une valeur de 1 à 7 ici (dimanche étant 1, samedi étant 7).Modding par 7 puis en ajoutant 1 ne fait rien littéralement. –