public TimeRecord parseTime(final UTCDate value) {
        final FormatOptions.Builder builder = FormatOptions
                .builder()
                .hour(Hour.TWO_DIGIT)
                .minute(Minute.TWO_DIGIT)
                .second(Second.TWO_DIGIT)
                .fractionalSecondDigits(3)
                .timeZoneName(TimeZoneName.SHORT);
        setTimeZone(builder);

        String timeString = IntlDateTimeFormat
                .format(value, EN_LOCALE, builder.build());
        final int timeZoneIndex = timeString.indexOf(" ");
        if (timeZoneIndex != -1) {
            timeString = timeString.substring(0, timeZoneIndex);
        }
        final String[] parts = timeString.split(":");
        final String[] secondParts = parts[2].split("\\.");
        final int hour = ClientStringUtil.getInt(parts[0]);
        final int minute = ClientStringUtil.getInt(parts[1]);
        final int second = ClientStringUtil.getInt(secondParts[0]);
        final int millisecond = ClientStringUtil.getInt(secondParts[1]);
        return new TimeRecord(hour, minute, second, millisecond);
    }
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