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

Puisque GWT ne fournit pas la classe GregorianCalendar, comment faire des opérations de calendrier sur le client?

J'ai un rendez - 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
demandé sur Witek 2010-03-27 04:55:16

4 réponses

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.utilisateur.datepicker.client.CalendarUtil.

67
répondu Tony BenBrahim 2012-06-25 14:26:31

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);
  }

Il s'agit de la classe com.google.gwt.user.datepicker.client.CalendarUtil, qui est utilisée 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 de Joda temps pour GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=603 . Le Dernier commentaire indique actuellement qu'il y a une nouvelle fourchette de temps goda, peut-être que nous devrions vraiment le vérifier hors.

9
répondu Chris Lercher 2010-03-27 02:31:50
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 finira par s'égarer de millisecondes sur milléniums lorsque nous ajoutons ou laissons tomber les secondes bissextiles.

3
répondu Norm Wright 2011-01-05 14:10:19

J'ai créé une implémentation approximative qui émule le fuseau horaire, le calendrier et les paramètres régionaux. N'hésitez pas à essayer ici:

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

1
répondu user471824 2010-10-11 00:49:02