web-dev-qa-db-ja.com

Java GWT?日付に日を追加する方法は?

GWTはGregorianCalendarクラスを提供しないため、クライアントでカレンダー操作を行う方法は?

日付aがあり、nからa日後の日付が必要です。

例:

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

GWT 2.1の更新された回答

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

編集:このクラスの完全修飾名は com.google.gwt.user.datepicker.client.CalendarUtil です。

67
Tony BenBrahim

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=6 。現在の最後のコメントは、goda timeの新しい分岐があると述べています。

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

これはうるう年でも機能しますが、最終的にうるう秒を追加または削除すると、ミレニアムでミリ秒単位で外れます。

3
Norm Wright

TimeZone、Calendar、およびLocaleをエミュレートする大まかな実装を作成しました。ここで試してみてください:

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

1
user471824