2015-03-03 2 views
0

Вот моя попытка сделать дату минус для GWT:Минус расчет даты с GWT

Date from = new Date(); 
Date to = new Date(); 

    if(filter.equals(DATE_FILTER.PAST_HOUR)){ 
     minusHoursToDate(to, 1); 
    } else if(filter.equals(DATE_FILTER.PAST_24_HOURS)){ 
     minusHoursToDate(to, 1 * 24); 
    } else if(filter.equals(DATE_FILTER.PAST_WEEK)){ 
     minusHoursToDate(to, 1 * 24 * 7); 
    } else if(filter.equals(DATE_FILTER.PAST_MONTH)){ 
     minusHoursToDate(to, 1 * 24 * 7 * 4); 
    } else if(filter.equals(DATE_FILTER.PAST_YEAR)){ 
     minusHoursToDate(to, 1 * 24 * 7 * 4 * 12); 
    } 

public static void minusHoursToDate(Date date, int hours){ 
    date.setTime(date.getTime() - (hours * 3600000)); 
} 

Проблема, которую я вижу здесь с расчетом в терминах месяца и года. Поскольку месяцы не всегда совпадают с четырьмя неделями, а также на год. Какой может быть лучший расчет для вычитания месяца & год?

+0

как обращаться с GWT? – Cataclysm

+0

Я думаю, что ваша ошибка использует тот же объект. После обновления вашего объекта один раз, расчет следующего раза будет действовать через последний обновленный результат. И проверьте использование статического метода. – Cataclysm

ответ

1

Поскольку java.util.Calendar не поддерживается в GWT из-за сложности, необходимой для его реализации, окончательного размера JS и т. Д., Я бы пошел с простым и легким решением на основе JS.

Помимо реализации Java Date, в GWT мы имеем JsDate оболочку, которая включает в себя все методы, доступные в нативном даты JS, поэтому вычитая месяц или год должен быть проще, так как:

int months = -2; 
    int years = -3; 
    JsDate j = JsDate.create(new Date().getTime()); 
    j.setMonth(j.getMonth() + months); 
    j.setFullYear(j.getFullYear() + years); 
    Date d = new Date((long)j.getTime()); 

Вы можете сделать то же самое для управления другими устройствами:

getDate() Returns the day of the month (from 1-31) 
    getDay() Returns the day of the week (from 0-6) 
    getFullYear() Returns the year (four digits) 
    getHours() Returns the hour (from 0-23) 
    getMilliseconds() Returns the milliseconds (from 0-999) 
    getMinutes() Returns the minutes (from 0-59) 
    getMonth() Returns the month (from 0-11) 
    getSeconds() Returns the seconds (from 0-59)