2012-06-29 5 views
0

Qu'est-ce qu'une partie de compteur de ce code dans GWT?Comment obtenir une liste de jours ou un nombre de jours dans un mois avec GWT?

public int returnAllDaysOf(2012,6){ 

     Calendar calendar = Calendar.getInstance(); 

     calendar.set(2012, Calendar.FEBRUARY, 1); 

     int daysOfFeb = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 

     return daysOfFeb; 

} 

Merci d'avance pour votre aide.

Je souhaite obtenir le nombre de jours d'un mois du côté client. J'ai cherché Google et StackOverFlow mais n'ai rien obtenu.

par exemple FEB 29 jours, Match a 31 jours et ainsi de suite ...

Répondre

2

Je ne sais pas d'une manière directe, mais vous pouvez calculer cette valeur en ajoutant un mois à votre date, puis calcualting la différence de jours:

final Date myDate = ...; 

final Date copyOfDate = CalendarUtil.copyDate(myDate); 
CalendarUtil.addMonthsToDate(copyOfDate, 1); 

final int daysBetween = CalendarUtil.getDaysBetween(myDate, copyOfDate); 

note: Cela fonctionne même si myDate est quelque chose comme 2012-01-31. copyOfDate est alors 2012-03-02 (parce que février n'a pas 31 jours), et le résultat est à nouveau correct.

+0

semble une solution astucieuse, j'ai résolu mon problème d'une autre manière qui est plus simple, en créant une carte du mois et le nombre de jours correspondants :) merci de répondre quand même :) – Adelin

+3

ohk mais, qu'en est-il de l'année bissextile ..... ... –

0

"Tricherie" façon de le faire:

int daysInCurrentMonth = new Date(year-1900, month+1, 0).getDate(); 

C.-À

int daysInJanuary2014 = new Date(114, 1, 0).getDate(); 

essentiellement définir l'objet Date le jour 0th du mois suivant, puis obtenir le jour du mois.

NOTE: Date(int year, int month, int date)year=calendarYear-1900 attend (à savoir 2014 = 114) et le mois est 0-based (à savoir Janvier serait le mois 0)

et oui, je sais que ce constructeur est dépréciée, mais je l'utilise encore.

-1
 DateField dfMois = new DateField(); 

     Calendar calendar = Calendar.getInstance(); 

     calendar.setTime(dfMois.getValue()); 

     Date date = dfMois.getValue(); 

     Date dateCopy = dateFin; 

     dateCopy.setDate(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); 

     if(date.getMonth() == Calendar.FEBRUARY + 1){ 
      date.setDate(31 - dateCopy.getDate()); 
      date.setMonth(date.getMonth()-1); 
     } 
     else{ 
      date.setDate(dateCopy.getDate()); 
     } 
     dfMois.setValue(date); 

Dans votre code ... cela fonctionne.

+0

Ce code n'est pas compatible GWT, Calendar n'est pas émulé dans GWT. –

Questions connexes