Search code examples
javadategwtsmartgwt

SmartGwt: add days to date


How do you add days to a date in SmartGwt. I found this question and found that I can use CalendarUtil.addDaysToDate(dateToAddTo, daysToAddToDateAsInteger)); but addDaysToDate() is static void. What is the point of a method that can "add days to a date" if it does not return anything?

How do I use this method? I want to do something like this.

Date newDate = dateToAddTo + daysToAddToDate;

Here is a simplified version of my code.

if (listGridRecord.getAttribute("expirationDays") != null) {
    CalendarUtil.addDaysToDate((Date) endDate.getValue(), Integer.parseInt(listGridRecord.getAttribute("expirationDays")));

    listGridRecord.setAttribute("expirationDate", (Date) endDate.getValue());
} else {
    listGridRecord.setAttributeAsJavaObject("expirationDate", null);
}

Here is a link to the javadocs


Solution

  • This method changes the object that is passed as parameter.

    Date date = new Date();
    long checkBeforeChange = date.getTime();
    CalendarUtil.addDaysToDate(date, 1);
    long checkAfterChange = date.getTime();
    if(checkBeforeChange != checkAfterChange)
        Window.alert("It works ;)");
    

    Your code should be something like that:

    if (listGridRecord.getAttribute("expirationDays") != null) {
        Date tmpDate = endDate.getValue();
        CalendarUtil.addDaysToDate(tmpDate, Integer.parseInt(listGridRecord.getAttribute("expirationDays")));
        listGridRecord.setAttribute("expirationDate", tmpDate);
    } else {
        listGridRecord.setAttributeAsJavaObject("expirationDate", null);
    }
    

    When doing (Date) endDate.getValue() you get a copy of Date object thus you don't see any change.