sumar - ¿Cómo hacer operaciones de calendario en Java GWT? ¿Cómo agregar días a una fecha?
obtener fecha java calendar (4)
Creé una implementación aproximada que emula TimeZone, Calendar y Locale. Siéntase libre de probarlo aquí:
Como GWT no proporciona la clase GregorianCalendar, ¿cómo hacer operaciones de calendario en el cliente?
Tengo una Fecha a
y quiero la Fecha, que es n
días después de a
.
Ejemplos:
a (2000-01-01) + n (1) -> 2000-01-02
a (2000-01-01) + n (31) -> 2000-02-01
La respuesta que Google parece usar (actualmente) es:
@SuppressWarnings("deprecation") // GWT requires Date
public static void addDaysToDate(Date date, int days) {
date.setDate(date.getDate() + days);
}
Esto es de la clase com.google.gwt.user.datepicker.client.CalendarUtil
, que es utilizada por com.google.gwt.user.datepicker.client.DatePicker
. Imagino que habrá problemas involucrados al hacer cálculos en diferentes zonas horarias.
Muchas personas ya han votado por algún tipo de tiempo Joda para GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=603 . El último comentario actual dice que hay una nueva bifurcación de tiempo de godas, tal vez deberíamos verificarlo.
Respuesta actualizada para GWT 2.1
final Date dueDate = new Date();
CalendarUtil.addDaysToDate(dueDate, 21);
Editar: el nombre completo de esta clase es com.google.gwt.user.datepicker.client.CalendarUtil .
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));
}
esto funcionará con los años bisiestos, pero eventualmente se desvanecerá en milisegundos en los milenios cuando agreguemos o dejemos caer segundos.