public String formatIso(final UTCDate value) {
        final long offsetMillis = getOffsetMillis(value);
        final UTCDate adjusted = UTCDate.create(value.getTime());
        adjusted.setTime(value.getTime() + offsetMillis);
        final StringBuilder sb = new StringBuilder();
        sb.append(ClientStringUtil.zeroPad(4, adjusted.getFullYear()));
        sb.append("-");
        sb.append(ClientStringUtil.zeroPad(2, adjusted.getMonth() + 1));
        sb.append("-");
        sb.append(ClientStringUtil.zeroPad(2, adjusted.getDate()));
        sb.append("T");
        sb.append(ClientStringUtil.zeroPad(2, adjusted.getHours()));
        sb.append(":");
        sb.append(ClientStringUtil.zeroPad(2, adjusted.getMinutes()));
        sb.append(":");
        sb.append(ClientStringUtil.zeroPad(2, adjusted.getSeconds()));
        sb.append(".");
        sb.append(ClientStringUtil.zeroPad(3, adjusted.getMilliseconds()));
        if (offsetMillis == 0) {
            sb.append("Z");
        } else {
            sb.append(getOffsetString(value));
        }
        return sb.toString();
    }
Shifts the currently specified date by the given number of months. The day
of the month will be pinned to the original value as far as possible.

@param deltaMonths - number of months to be added to the current date
stroom-core-client-widget/src/main/java/stroom/widget/datepicker/client/DateTimeModel.java