2010-03-27 9 views

Odpowiedz

67

Updated odpowiedź na GWT 2.1

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

Edycja: pełna nazwa tej klasy jest com.google.gwt.user.datepicker.client.CalendarUtil.

+0

Dzięki za tę odpowiedź –

+0

Alternatywna odpowiedź @Chris Lercher może pomóc, jeśli potrzebujesz dodać jednostkę czasu oprócz dni (tj. Godzin) – cellepo

9

Odpowiedź, że Google wydaje się używać (obecnie) wynosi:

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

To z klasy com.google.gwt.user.datepicker.client.CalendarUtil, który jest wykorzystywany przez com.google.gwt.user.datepicker.client.DatePicker. Wyobrażam sobie, że będą występować problemy podczas wykonywania obliczeń w różnych strefach czasowych.

Wiele osób już głosowało na jakiś czas Joda dla GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=603. Ostatni komentarz mówi, że jest nowy rozwidlenie czasu na gody, może powinniśmy to sprawdzić.

+0

Można również wywołać inne ustawione metody Date w celu dodania różnych jednostek czasu (np. SetHours) – cellepo

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

to będzie działać z lat przestępnych ale ostatecznie bezpański przez milisekund na tysiącleci gdy dodamy lub spadek przestępnych sekund.

+5

+1, ale proszę zauważyć: To zależy w dużym stopniu od tego, co chcesz osiągnąć. Zwykle dodanie 7 dni do "2011-03-22 10:00:00 CET" powinno spowodować "2011-03-29 10:00:00 CET" (tzn. Czas lokalny powinien pozostać o godzinie 10). Ale ponieważ w CET między dwoma datami występuje zmiana zegara (DST), obliczenie milisekundy da inny wynik. Znowu zależy od tego, jakiego rodzaju obliczenia chcesz! –

Powiązane problemy