Étant donné que GWT ne fournit pas la classe GregorianCalendar, comment effectuer des opérations de calendrier sur le client?
J'ai une date a
et je veux la date, qui est n
jours après a
.
Exemples:
a (2000-01-01) + n (1) -> 2000-01-02
a (2000-01-01) + n (31) -> 2000-02-01
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 .
La réponse que Google semble utiliser (actuellement) est:
@SuppressWarnings("deprecation") // GWT requires Date
public static void addDaysToDate(Date date, int days) {
date.setDate(date.getDate() + days);
}
C'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 lors des calculs dans différents fuseaux horaires.
Beaucoup de gens ont déjà voté pour un certain temps Joda pour GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=6 . Le dernier commentaire actuel indique qu'il y a une nouvelle fourchette de temps Goda, nous devrions peut-être vraiment le vérifier.
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 s'égarera par millisecondes sur les millénaires lorsque nous ajouterons ou baisserons les secondes bissextiles.
J'ai créé une implémentation approximative qui émule TimeZone, Calendar et Locale. N'hésitez pas à l'essayer ici: