cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
21 août 2013 à 12:03
KX
Messages postés16734Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention24 avril 2024
-
29 août 2013 à 11:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
KX
Messages postés16734Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention24 avril 2024127 Modifié par KX le 29/08/2013 à 12:01
Je trouve très moyen de comparer deux dates par la représentation de leurs String. En plus tel que c'est fait, les objets SimpleDateFormat sdf, et Date dateAujourdhui sont recréés à chaque accept, ça veut dire pour chaque fichier à analyser, or la date ne va pas changer d'un fichier à l'autre, et encore moins le format !
J'améliorerai en faisant comme ceci, le constructeur initialise deux dates (le minuit de début de journée, et le minuit de fin de journée, pas forcément le même jour d'ailleurs...) et on vérifie que la date du fichier est bien entre les deux.
import java.io.File;
import java.io.FileFilter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateFileFilter implements FileFilter {
private final Calendar midnightBefore;
private final Calendar midnightAfter;
public DateFileFilter() {
this(null, null);
}
public DateFileFilter(Date date) {
this(date, date);
}
public DateFileFilter(Date begin, Date end) {
midnightBefore = new GregorianCalendar();
midnightAfter = new GregorianCalendar();
if (begin != null)
midnightBefore.setTime(begin);
if (end != null)
midnightAfter.setTime(end);
midnightBefore.set(Calendar.HOUR, 0);
midnightBefore.set(Calendar.MINUTE, 0);
midnightBefore.set(Calendar.SECOND, 0);
midnightBefore.set(Calendar.MILLISECOND, 0);
midnightAfter.set(Calendar.HOUR, 23);
midnightAfter.set(Calendar.MINUTE, 59);
midnightAfter.set(Calendar.SECOND, 59);
midnightAfter.set(Calendar.MILLISECOND, 999);
}
@Override
public boolean accept(File f) {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTimeInMillis(f.lastModified());
return calendar.after(midnightBefore) && calendar.before(midnightAfter);
}
}
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 21 août 2013 à 13:52
C'est normal, le fichier doit être côté serveur, soit il est déjà présent côté serveur et dans ce cas là, il fonctionnera soit tu dois d'abord uploader ce fichier vers le serveur.
lolyta1
Messages postés19Date d'inscriptionmardi 20 août 2013StatutMembreDernière intervention 3 juillet 20141 21 août 2013 à 12:03
Merci Cs_Julien
mais j'arrive pas à reproduire le même code sur une page jsp
Modifié par KX le 29/08/2013 à 12:01
J'améliorerai en faisant comme ceci, le constructeur initialise deux dates (le minuit de début de journée, et le minuit de fin de journée, pas forcément le même jour d'ailleurs...) et on vérifie que la date du fichier est bien entre les deux.
21 août 2013 à 13:52
21 août 2013 à 12:03
mais j'arrive pas à reproduire le même code sur une page jsp