web-dev-qa-db-fra.com

Comment faire des opérations de calendrier dans Java GWT? Comment ajouter des jours à une date?

É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
48
Witek

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 .

67
Tony BenBrahim

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.

9
Chris Lercher
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.

3
Norm Wright

J'ai créé une implémentation approximative qui émule TimeZone, Calendar et Locale. N'hésitez pas à l'essayer ici:

http://code.google.com/p/gwt-calendar-class/downloads/list

1
user471824