2009-10-02 7 views
3

Je souhaite sélectionner les enregistrements dont la date de création est comprise entre le premier et le dernier jour d'un mois donné. Je calcule le mois avec début et endDate de la façon suivante:Calcul d'un mois en tant que période "entre" dans java

La date « mois » est juste une date aléatoire à l'intérieur du délai

Calendar cal = Calendar.getInstance(); 
cal.setTime(month); 
int endday = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 
int actualmonth = cal.get(Calendar.MONTH) + 1; 
int year = cal.get(Calendar.YEAR); 

Date begin = format.parse("01." + actualmonth + "." + year); 
Date end = format.parse(endday + "." + actualmonth + "." + year); 

Quand je pense à cela, j'aurais fait pour régler la le jour aussi, pour éviter que les dossiers ne disparaissent le dernier jour du mois. Je pense que c'est un peu inélégant, quelqu'un pour une meilleure solution?

+0

Êtes-vous en train de sélectionner les enregistrements d'une base de données? –

+0

oui, en utilisant un select .. entre: start et: end –

Répondre

6

Ce que je voudrais faire est de créer un calendrier et de régler le mois et l'année au mois que vous voulez, le jour à 1, heure, minute et milliseconde à zéro. Ensuite, prenez la date de cela pour votre gamme de début. Ensuite, j'ajouterais un mois, puis soustrais une milliseconde. Prenez la date de cela pour votre gamme finale.

Calendar dateCal = Calendar.getInstance(); 
    dateCal.set(Calendar.MONTH, month); 
    dateCal.set(Calendar.YEAR, year); 
    dateCal.set(Calendar.HOUR_OF_DAY, 0); 
    dateCal.set(Calendar.MINUTE, 0); 
    dateCal.set(Calendar.SECOND, 0); 
    dateCal.set(Calendar.MILLISECOND, 0); 
    Date startDate = dateCal.getTime(); 

    dateCal.add(Calendar.MONTH, 1) 
    dateCal.add(Calendar.MILLISECOND, -1); 
    Date endDate = dateCal.getTime(); 
3

Il existe des méthodes disponibles dans la classe Calendrier pour obtenir les premiers et derniers jours du mois:

getActualMaximum(Calendar.DAY_OF_MONTH) 
getActualMinimum(Calendar.DAY_OF_MONTH) 
0

bien, il résolu par l'exemple de Paul:

Calendar cal = Calendar.getInstance(); 
cal.setTime(month); 
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMinimum(Calendar.DATE), 0, 0, 0); 
cal.set(Calendar.MILLISECOND, 0); 
Date begin = cal.getTime(); 
cal.add(Calendar.MONTH, 1); 
cal.add(Calendar.MILLISECOND, -1); 
Date end = cal.getTime(); 

remercie tout le monde

Questions connexes