Как сделать календарные операции в Java GWT? Как добавить дни к дате? - PullRequest
48 голосов
/ 27 марта 2010

Поскольку GWT не предоставляет класс GregorianCalendar, как выполнять операции с календарем на клиенте?

У меня есть дата a, и я хочу дату, которая составляет n дней после a.

Примеры:

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

Ответы [ 4 ]

67 голосов
/ 22 марта 2011

Обновленный ответ для GWT 2.1

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

Изменить: полное имя этого класса: com.google.gwt.user.datepicker.client.CalendarUtil .

9 голосов
/ 27 марта 2010

Ответ, который 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: http://code.google.com/p/google-web-toolkit/issues/detail?id=603. В текущем последнем комментарии говорится, что есть новый разветвленный срок, может быть, нам стоит его проверить.

3 голосов
/ 05 января 2011
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));
}

это будет работать с високосными годами, но в конечном итоге будет отклоняться на миллисекунды на тысячелетия, когда мы добавляем или удаляем високосные секунды.

1 голос
/ 11 октября 2010

Я создал грубую реализацию, которая эмулирует TimeZone, Calendar и Locale. Не стесняйтесь попробовать это здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...