如何在Java GWT中做日历操作? 如何添加date到date?

由于GWT不提供GregorianCalendar类,如何在客户端上执行日历操作?

我有一个datea ,我想要的date,这是n天后。

例子:

 a (2000-01-01) + n (1) -> 2000-01-02 a (2000-01-01) + n (31) -> 2000-02-01 

更新了GWT 2.1的答案

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

编辑:此类的完全限定名称是com.google.gwt.user.datepicker.client.CalendarUtil 。

Google似乎正在使用的答案是:

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

这是来自com.google.gwt.user.datepicker.client.CalendarUtil使用的com.google.gwt.user.datepicker.client.DatePicker 。 我想,在不同的时区进行计算时会涉及到问题。

很多人已经为GWT投了一些Joda时间: http : //code.google.com/p/google-web-toolkit/issues/detail ?id=603。 目前最后的评论指出,有一个新的时间分叉,也许我们应该检查出来。

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

这将与闰年一起工作,但当我们增加或减less闰秒时, 最终会在毫秒级上stream失数毫秒。

我创build了一个模拟TimeZone,Calendar和Locale的粗略实现。 随意尝试在这里:

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