2010-03-27 4 views

Répondre

67

réponse Mise à jour pour GWT 2,1

final Date dueDate = new Date(); 
CalendarUtil.addDaysToDate(dueDate, 21); 

Edit: le nom complet de cette classe est com.google.gwt.user.datepicker.client.CalendarUtil.

+0

Merci pour cette réponse –

+0

La réponse alternative par @ Chris Lercher peut vous aider si vous avez besoin d'ajouter une unité de temps en plus des jours (c'est-à-dire heures) – cellepo

9

La réponse que Google semble utiliser (actuellement), est la suivante:

@SuppressWarnings("deprecation") // GWT requires Date 
    public static void addDaysToDate(Date date, int days) { 
    date.setDate(date.getDate() + days); 
    } 

Ceci est de la classe com.google.gwt.user.datepicker.client.CalendarUtil, qui est utilisé par com.google.gwt.user.datepicker.client.DatePicker. J'imagine, qu'il y aura des problèmes impliqués, en faisant des calculs dans différents fuseaux horaires.

Beaucoup de gens ont déjà voté pour une sorte d'heure Joda pour GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=603. Le dernier commentaire indique qu'il y a une nouvelle fourchette de temps goda, peut-être que nous devrions vraiment vérifier.

+0

Vous pouvez également appeler les autres méthodes d'ensemble de Date pour ajouter différentes unités de temps (par exemple: setHours) – cellepo

3
private static final long MILLISECONDS_IN_SECOND = 1000l; 
private static final long SECONDS_IN_MINUTE = 60l; 
private static final long MINUTES_IN_HOUR = 60l; 
private static final long HOURS_IN_DAY = 24l; 
private static final long MILLISECONDS_IN_DAY = MILLISECONDS_IN_SECOND * 
     SECONDS_IN_MINUTE * 
     MINUTES_IN_HOUR * 
     HOURS_IN_DAY; 
public Date addDays (Date date, days) 
{ 
return new Date (date.getTime() + (days * MILLISECONDS_IN_DAY)); 
} 

cela fonctionnera avec les années bissextiles mais éventuellement parasite par millisecondes lorsque nous sur des millénaires ajouter ou supprimer des secondes de saut.

+5

+1, mais veuillez noter ceci: Cela dépend beaucoup de ce que vous voulez obtenir. Habituellement, l'ajout de 7 jours au «2011-03-22 10:00:00 CET» devrait donner lieu à «2011-03-29 10:00:00 CET» (c'est-à-dire que l'heure locale doit rester à 10 heures). Mais parce que dans CET, un changement d'heure (DST) se produit entre les deux dates, le calcul milliseconde donnera un résultat différent. Encore une fois, cela dépend du type de calcul que vous voulez! –

Questions connexes