GWT没有提供GregorianCalendar类,那么如何在客户端上进行日历操作?
我有一个Date类型的变量a
,我想得到从a
开始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。
@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 Time 的建议:http://code.google.com/p/google-web-toolkit/issues/detail?id=603。目前最后一条评论指出,有一个新的 goda time 分支,也许我们应该真的去看看它。
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));
}
这将适用于闰年,但在添加或删除闰秒的千年时会最终偏移毫秒。
我已经创建了一个粗略的实现,模拟了时区、日历和语言环境。欢迎在这里尝试它: