Example usage for org.joda.time DateTime withDayOfMonth

List of usage examples for org.joda.time DateTime withDayOfMonth

Introduction

In this page you can find the example usage for org.joda.time DateTime withDayOfMonth.

Prototype

public DateTime withDayOfMonth(int dayOfMonth) 

Source Link

Document

Returns a copy of this datetime with the day of month field updated.

Usage

From source file:cron.DateTimes.java

License:Open Source License

public static DateTime nthOfMonth(DateTime t, int dayOfWeek, int desiredNumber) {
    int month = t.getMonthOfYear();
    t = t.withDayOfMonth(1).withDayOfWeek(dayOfWeek);
    if (t.getMonthOfYear() != month)
        t = t.plusWeeks(1);/*from  w w w  . j  a v a2s .c o m*/
    int number = 1;
    while (number < desiredNumber && t.getMonthOfYear() == month) {
        number++;
        t = t.plusWeeks(1);
    }
    return t;
}

From source file:cron.DayOfWeekField.java

License:Open Source License

public boolean matches(DateTime time) {
    if (unspecified)
        return true;
    final int dayOfWeek = time.getDayOfWeek();
    int number = number(dayOfWeek);
    if (hasLast) {
        return last.contains(number) && time.getMonthOfYear() != time.plusWeeks(1).getMonthOfYear();
    } else if (hasNth) {
        for (int possibleMatch : nth.get(number)) {
            DateTime midnight = time.withTimeAtStartOfDay();
            DateTime first = midnight.withDayOfMonth(1).withDayOfWeek(dayOfWeek);
            if (first.getMonthOfYear() != time.getMonthOfYear())
                first = first.plusWeeks(1);
            DateTime tomorrow = midnight.plusDays(1);
            int weekNumber = 1 + (int) ((tomorrow.getMillis() - first.getMillis()) / MILLISECONDS_PER_WEEK);
            if (possibleMatch == weekNumber)
                return true;
        }//from w w w  .j  av a2 s  .c  o m
    }
    return contains(number);
}

From source file:cron.Times.java

License:Open Source License

private void addDaysOfMonth(ImmutableSortedSet.Builder<DateTime> builder, DateTime base) {
    for (int day : daysOfMonth)
        if (day <= base.dayOfMonth().getMaximumValue())
            builder.add(base.withDayOfMonth(day));
}

From source file:dk.dma.epd.common.prototype.model.voct.SARISXMLParser.java

License:Apache License

private SARWeatherData getSingleSARWeatherData(Node node) throws XPathExpressionException {

    Element el = (Element) node;
    NodeList children = el.getChildNodes();
    Node timeEntry = children.item(1);

    Element timeElement = (Element) timeEntry;

    NodeList timeNodes = timeElement.getChildNodes();

    DateTime windEntryDate = new DateTime();

    // Day 0//from   w w w .  ja va  2 s  .co m
    windEntryDate = windEntryDate
            .withDayOfMonth(Integer.parseInt(timeNodes.item(0).getFirstChild().getNodeValue()));

    // Month 2
    windEntryDate = windEntryDate
            .withMonthOfYear(Integer.parseInt(timeNodes.item(2).getFirstChild().getNodeValue()));

    // Year 4
    windEntryDate = windEntryDate.withYear(Integer.parseInt(timeNodes.item(4).getFirstChild().getNodeValue()));

    // hour 6
    windEntryDate = windEntryDate
            .withHourOfDay(Integer.parseInt(timeNodes.item(6).getFirstChild().getNodeValue()));

    // minute 8
    windEntryDate = windEntryDate
            .withMinuteOfHour(Integer.parseInt(timeNodes.item(8).getFirstChild().getNodeValue()));

    // second 10
    windEntryDate = windEntryDate
            .withSecondOfMinute(Integer.parseInt(timeNodes.item(10).getFirstChild().getNodeValue()));

    Node windEntry = children.item(3);
    Element windElements = (Element) windEntry;
    NodeList windNodes = windElements.getChildNodes();

    System.out.println(windElements.getFirstChild().getNodeValue());

    for (int k = 0; k < windNodes.getLength(); k++) {
        System.out.println("k is " + k);
        Node child2 = windNodes.item(k);
        System.out.println("Child2 name is " + child2.getNodeName());
        if (child2.getNodeType() != Node.TEXT_NODE) {
            System.out.println("child tag: " + child2.getNodeName());
            if (child2.getFirstChild().getNodeType() == Node.TEXT_NODE) {
                System.out.println("inner child value:" + child2.getFirstChild().getNodeValue());
            }

        }
    }

    // System.out.println(node.getChildNodes());

    // Get time
    // System.out.println(getDateFromNodeList(node.getChildNodes().item(1).getChildNodes()));
    // System.out.println(node.getChildNodes().item(1).getChildNodes().item(0).getChildNodes().item(0).getNodeValue());

    // Wind values
    // System.out.println(node.getChildNodes().item(3));

    // for (int i = 0; i < node.getChildNodes().getLength(); i++) {
    // System.out.println(node.getChildNodes().item(i).getChildNodes().item(1));
    // }

    return null;
}

From source file:dk.dma.epd.common.prototype.model.voct.SARISXMLParser.java

License:Apache License

private DateTime getDateFromNodeList(NodeList nodeList) {
    DateTime returnDate = new DateTime();

    if (nodeList.getLength() == 0) {
        return null;
    }//w  w w. j a  v a  2  s.co m

    if (nodeList.item(0).getNodeName().equals("day")) {
        // Day
        returnDate = returnDate
                .withDayOfMonth(Integer.parseInt(nodeList.item(0).getFirstChild().getNodeValue()));
        // System.out.println("DAY");
    }

    if (nodeList.item(1).getNodeName().equals("month")) {
        // Month
        returnDate = returnDate
                .withMonthOfYear(Integer.parseInt(nodeList.item(1).getFirstChild().getNodeValue()));
        // System.out.println("MONTH");
    }

    if (nodeList.item(2).getNodeName().equals("year")) {
        // Year
        returnDate = returnDate.withYear(Integer.parseInt(nodeList.item(2).getFirstChild().getNodeValue()));
        // System.out.println("YEAR");
    }

    if (nodeList.item(3).getNodeName().equals("hour")) {
        // Hour
        returnDate = returnDate
                .withHourOfDay(Integer.parseInt(nodeList.item(3).getFirstChild().getNodeValue()));
        // System.out.println("HOUR");
    }

    if (nodeList.item(4).getNodeName().equals("minute")) {
        // Minute
        returnDate = returnDate
                .withMinuteOfHour(Integer.parseInt(nodeList.item(4).getFirstChild().getNodeValue()));
        // System.out.println("MINUTE");
    }

    if (nodeList.item(5).getNodeName().equals("second")) {
        // Second
        returnDate = returnDate
                .withSecondOfMinute(Integer.parseInt(nodeList.item(5).getFirstChild().getNodeValue()));
        // System.out.println("SECOND");
    }

    return returnDate;

}

From source file:edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo.java

License:Open Source License

private Map<String, String> checkDate(String precisionURI, Map<String, String[]> qp) {
    if (precisionURI == null)
        return Collections.emptyMap();

    Map<String, String> errors = new HashMap<String, String>();

    Integer year, month, day, hour, minute, second;

    //just check if the values for the precision parse to integers
    if (precisionURI.equals(VitroVocabulary.Precision.YEAR.uri())) {
        if (!canParseToNumber(getFieldName() + "-year", qp))
            errors.put(getFieldName() + "-year", NON_INTEGER_YEAR);
    } else if (precisionURI.equals(VitroVocabulary.Precision.MONTH.uri())) {
        if (!canParseToNumber(getFieldName() + "-year", qp))
            errors.put(getFieldName() + "-year", NON_INTEGER_YEAR);
        if (!canParseToNumber(getFieldName() + "-month", qp))
            errors.put(getFieldName() + "-month", NON_INTEGER_MONTH);
    } else if (precisionURI.equals(VitroVocabulary.Precision.DAY.uri())) {
        if (!canParseToNumber(getFieldName() + "-year", qp))
            errors.put(getFieldName() + "-year", NON_INTEGER_YEAR);
        if (!canParseToNumber(getFieldName() + "-month", qp))
            errors.put(getFieldName() + "-month", NON_INTEGER_MONTH);
        if (!canParseToNumber(getFieldName() + "-day", qp))
            errors.put(getFieldName() + "-day", NON_INTEGER_DAY);
    } else if (precisionURI.equals(VitroVocabulary.Precision.HOUR.uri())) {
        if (!canParseToNumber(getFieldName() + "-year", qp))
            errors.put(getFieldName() + "-year", NON_INTEGER_YEAR);
        if (!canParseToNumber(getFieldName() + "-month", qp))
            errors.put(getFieldName() + "-month", NON_INTEGER_MONTH);
        if (!canParseToNumber(getFieldName() + "-day", qp))
            errors.put(getFieldName() + "-day", NON_INTEGER_DAY);
        if (!canParseToNumber(getFieldName() + "-hour", qp))
            errors.put(getFieldName() + "-hour", NON_INTEGER_HOUR);
    } else if (precisionURI.equals(VitroVocabulary.Precision.MINUTE.uri())) {
        if (!canParseToNumber(getFieldName() + "-year", qp))
            errors.put(getFieldName() + "-year", NON_INTEGER_YEAR);
        if (!canParseToNumber(getFieldName() + "-month", qp))
            errors.put(getFieldName() + "-month", NON_INTEGER_MONTH);
        if (!canParseToNumber(getFieldName() + "-day", qp))
            errors.put(getFieldName() + "-day", NON_INTEGER_DAY);
        if (!canParseToNumber(getFieldName() + "-hour", qp))
            errors.put(getFieldName() + "-hour", NON_INTEGER_HOUR);
        if (!canParseToNumber(getFieldName() + "-minute", qp))
            errors.put(getFieldName() + "-minute", NON_INTEGER_HOUR);
    } else if (precisionURI.equals(VitroVocabulary.Precision.SECOND.uri())) {
        if (!canParseToNumber(getFieldName() + "-year", qp))
            errors.put(getFieldName() + "-year", NON_INTEGER_YEAR);
        if (!canParseToNumber(getFieldName() + "-month", qp))
            errors.put(getFieldName() + "-month", NON_INTEGER_MONTH);
        if (!canParseToNumber(getFieldName() + "-day", qp))
            errors.put(getFieldName() + "-day", NON_INTEGER_DAY);
        if (!canParseToNumber(getFieldName() + "-hour", qp))
            errors.put(getFieldName() + "-hour", NON_INTEGER_HOUR);
        if (!canParseToNumber(getFieldName() + "-minute", qp))
            errors.put(getFieldName() + "-minute", NON_INTEGER_HOUR);
        if (!canParseToNumber(getFieldName() + "-second", qp))
            errors.put(getFieldName() + "-second", NON_INTEGER_SECOND);
    }//w  w  w .java 2s.c om

    //check if we can make a valid date with these integers
    year = parseToInt(getFieldName() + "-year", qp);
    if (year == null)
        year = 1999;
    month = parseToInt(getFieldName() + "-month", qp);
    if (month == null)
        month = 1;
    day = parseToInt(getFieldName() + "-day", qp);
    if (day == null)
        day = 1;
    hour = parseToInt(getFieldName() + "-hour", qp);
    if (hour == null)
        hour = 0;
    minute = parseToInt(getFieldName() + "-minute", qp);
    if (minute == null)
        minute = 0;
    second = parseToInt(getFieldName() + "-second", qp);
    if (second == null)
        second = 0;

    //initialize to something so that we can be assured not to get 
    //system date dependent behavior
    DateTime dateTime = new DateTime("1970-01-01T00:00:00Z");

    try {
        dateTime = dateTime.withYear(year);
    } catch (IllegalArgumentException iae) {
        errors.put(getFieldName() + "-year", iae.getLocalizedMessage());
    }
    try {
        dateTime = dateTime.withMonthOfYear(month);
    } catch (IllegalArgumentException iae) {
        errors.put(getFieldName() + "-month", iae.getLocalizedMessage());
    }
    try {
        dateTime = dateTime.withDayOfMonth(day);
    } catch (IllegalArgumentException iae) {
        errors.put(getFieldName() + "-day", iae.getLocalizedMessage());
    }
    try {
        dateTime = dateTime.withHourOfDay(hour);
    } catch (IllegalArgumentException iae) {
        errors.put(getFieldName() + "-hour", iae.getLocalizedMessage());
    }
    try {
        dateTime = dateTime.withSecondOfMinute(second);
    } catch (IllegalArgumentException iae) {
        errors.put(getFieldName() + "-second", iae.getLocalizedMessage());
    }

    return errors;
}

From source file:io.apiman.manager.api.core.metrics.AbstractMetricsAccessor.java

License:Apache License

/**
 * Based on the given interval, create a "floor" value relative to the
 * given date.  This basically means zero'ing out certain fields (different
 * fields based on the interval type) and returning the modified date.
 * @param date//from w w w .  ja  v a2 s.  com
 * @param interval
 */
protected static DateTime floor(DateTime date, HistogramIntervalType interval) {
    DateTime rval = date.withMillisOfSecond(0);

    switch (interval) {
    case day:
        rval = rval.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0);
        break;
    case hour:
        rval = rval.withMinuteOfHour(0).withSecondOfMinute(0);
        break;
    case minute:
        rval = rval.withSecondOfMinute(0);
        break;
    case month:
        rval = rval.withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0);
        break;
    case week:
        rval = rval.withDayOfWeek(DateTimeConstants.MONDAY).withHourOfDay(0).withMinuteOfHour(0)
                .withSecondOfMinute(0);
        break;
    }

    return rval;
}

From source file:net.rrm.ehour.util.DateUtil.java

License:Open Source License

/**
 * Converts a calendar to a range covering that month
 *
 * @return first Calendar object is start of the month, last Calendar object is end of the month
 *//*from   w  ww .j a  va  2 s.  c o  m*/
public static DateRange calendarToMonthRange(Calendar calendar) {

    DateTime date = new DateTime(calendar);

    return new DateRange(new Interval(date.withDayOfMonth(1), date.withDayOfMonth(getDaysInMonth(date))));
}

From source file:net.sourceforge.fenixedu.presentationTier.TagLib.GanttDiagramTagLib.java

License:Open Source License

private StringBuilder generateGanttDiagramInTotalMode(BigDecimal tableWidth) throws JspException {

    StringBuilder builder = new StringBuilder();

    if (!getEvents().isEmpty()) {
        if (isShowPeriod() && isShowObservations()) {
            builder.append("<table style=\"width:")
                    .append(tableWidth.add(BigDecimal.valueOf(FIXED_COLUMNS_SIZE_EM)))
                    .append("em;\" class=\"tcalendar thlight\">");
        } else {/*from w  w w  .j  a  v a 2s . c o  m*/
            builder.append("<table style=\"width:")
                    .append(tableWidth.add(BigDecimal.valueOf(FIXED_COLUMNS_SIZE_EM - 35)))
                    .append("em;\" class=\"tcalendar thlight\">");
        }
        generateHeaders(builder);

        int scale = getScale();

        String selectedEvent = getRequest().getParameter(getEventParameter());
        Object selectedEventObject = getRequest().getAttribute(getEventParameter());

        for (GanttDiagramEvent event : getEvents()) {

            String eventUrl = getRequest().getContextPath() + getEventUrl() + "&amp;" + getEventParameter()
                    + "=" + event.getGanttDiagramEventIdentifier();
            String eventName = event.getGanttDiagramEventName().getContent(getGanttDiagramObject().getLocale());
            String paddingStyle = "padding-left:" + event.getGanttDiagramEventOffset() * PADDING_LEFT_MULTIPLIER
                    + "px";

            if (event.getGanttDiagramEventIdentifier().equals(selectedEvent) || (selectedEventObject != null
                    && event.getGanttDiagramEventIdentifier().equals(selectedEventObject.toString()))) {
                builder.append("<tr class=\"selected\">");
            } else {
                builder.append("<tr>");
            }

            builder.append("<td class=\"padded\">")
                    .append("<div style=\"overflow:hidden; width: 14.5em;\" class=\"nowrap\">");
            builder.append("<span style=\"").append(paddingStyle).append("\" title=\"").append(eventName)
                    .append("\">");
            builder.append("<a href=\"").append(eventUrl).append("\">").append("*").append(eventName);
            builder.append("</a></span></div></td>");

            for (DateTime month : getGanttDiagramObject().getMonths()) {

                DateTime firstDayOfMonth = (month.getDayOfMonth() != 1) ? month.withDayOfMonth(1) : month;
                DateTime lastDayOfMonth = firstDayOfMonth.plusMonths(1).minusDays(1);
                int monthNumberOfDays = Days.daysBetween(firstDayOfMonth, lastDayOfMonth).getDays() + 1;
                BigDecimal entryDays = EMPTY_UNIT, startDay = EMPTY_UNIT;

                builder.append("<td style=\"width: ").append(convertToEm(monthNumberOfDays * scale))
                        .append("em;\"><div style=\"position: relative;\">");

                for (Interval interval : event.getGanttDiagramEventSortedIntervals()) {

                    DateMidnight intervalStart = interval.getStart().toDateMidnight();
                    DateMidnight intervalEnd = interval.getEnd().toDateMidnight();

                    // Started in this month
                    if (intervalStart.getMonthOfYear() == month.getMonthOfYear()
                            && intervalStart.getYear() == month.getYear()) {

                        // Ended in this month
                        if (interval.getEnd().getMonthOfYear() == month.getMonthOfYear()
                                && intervalEnd.getYear() == month.getYear()) {

                            // Started in first day of this month
                            if (intervalStart.getDayOfMonth() == 1) {

                                // Ended in the last day of this month
                                if (intervalEnd.getDayOfMonth() == monthNumberOfDays) {
                                    entryDays = convertToEm(
                                            (Days.daysBetween(intervalStart, lastDayOfMonth).getDays() + 1)
                                                    * scale);
                                    startDay = convertToEm((intervalStart.getDayOfMonth() - 1) * scale);
                                    addSpecialDiv(builder, entryDays, startDay);
                                }

                                // Ended before last day of this month
                                else {
                                    entryDays = convertToEm(
                                            (Days.daysBetween(intervalStart, intervalEnd).getDays() + 1)
                                                    * scale);
                                    startDay = convertToEm((intervalStart.getDayOfMonth() - 1) * scale);
                                    addSpecialDiv(builder, entryDays, startDay);
                                }
                            }

                            // Started after first day of this month
                            else {

                                // Ended in the last day of this month
                                if (intervalEnd.getDayOfMonth() == monthNumberOfDays) {
                                    entryDays = convertToEm(
                                            (Days.daysBetween(intervalStart, lastDayOfMonth).getDays() + 1)
                                                    * scale);
                                    startDay = convertToEm((intervalStart.getDayOfMonth() - 1) * scale);
                                    addSpecialDiv(builder, entryDays, startDay);
                                }

                                // Ended before last day of this month
                                else {
                                    entryDays = convertToEm(
                                            (Days.daysBetween(intervalStart, intervalEnd).getDays() + 1)
                                                    * scale);
                                    startDay = convertToEm((intervalStart.getDayOfMonth() - 1) * scale);
                                    addSpecialDiv(builder, entryDays, startDay);
                                }
                            }
                        }

                        // Ended after this month
                        else {
                            entryDays = convertToEm(
                                    (Days.daysBetween(intervalStart, lastDayOfMonth).getDays() + 1) * scale);
                            startDay = convertToEm((intervalStart.getDayOfMonth() - 1) * scale);
                            addSpecialDiv(builder, entryDays, startDay);
                        }

                        // Not Started in this month
                    } else {

                        // Started before this month
                        if (intervalStart.getYear() < month.getYear()
                                || (intervalStart.getYear() == month.getYear()
                                        && intervalStart.getMonthOfYear() < month.getMonthOfYear())) {

                            // Ended after this month
                            if (intervalEnd.getYear() > month.getYear()
                                    || (intervalEnd.getYear() == month.getYear()
                                            && intervalEnd.getMonthOfYear() > month.getMonthOfYear())) {

                                entryDays = convertToEm(
                                        (Days.daysBetween(firstDayOfMonth, lastDayOfMonth).getDays() + 1)
                                                * scale);
                                startDay = convertToEm((firstDayOfMonth.getDayOfMonth() - 1) * scale);
                                addSpecialDiv(builder, entryDays, startDay);
                            } else {

                                // Ended in this month
                                if (intervalEnd.getMonthOfYear() == month.getMonthOfYear()
                                        && intervalEnd.getYear() == month.getYear()) {
                                    entryDays = convertToEm(
                                            (Days.daysBetween(firstDayOfMonth, intervalEnd).getDays() + 1)
                                                    * scale);
                                    startDay = convertToEm((firstDayOfMonth.getDayOfMonth() - 1) * scale);
                                    addSpecialDiv(builder, entryDays, startDay);
                                }
                            }
                        }
                    }
                }
                builder.append("</div></td>");
            }
            if (isShowPeriod()) {
                builder.append("<td class=\"padded smalltxt\" title=\"")
                        .append(event.getGanttDiagramEventPeriod())
                        .append("\"><div style=\"overflow:hidden;\" class=\"nowrap\">")
                        .append(event.getGanttDiagramEventPeriod()).append("</div></td>");
            }
            if (isShowObservations()) {
                builder.append("<td class=\"padded smalltxt\">")
                        .append(event.getGanttDiagramEventObservations()).append("</td>");
            }
            builder.append("</tr>");
        }

        insertNextAndBeforeLinks(builder);
        builder.append("</table>");
    }
    return builder;
}

From source file:net.sourceforge.fenixedu.presentationTier.TagLib.GanttDiagramTagLib.java

License:Open Source License

private void insertNextAndBeforeLinks(StringBuilder builder) throws JspException {

    YearMonthDay firstDay = getGanttDiagramObject().getFirstInstant().toYearMonthDay();
    if (firstDay != null) {

        String nextUrl = "";
        String beforeUrl = "";

        switch (getViewTypeEnum()) {

        case WEEKLY:

            if (!StringUtils.isEmpty(getWeeklyViewUrl())) {
                nextUrl = getRequest().getContextPath() + getWeeklyViewUrl() + "&amp;" + getFirstDayParameter()
                        + "=" + firstDay.plusDays(Lesson.NUMBER_OF_DAYS_IN_WEEK).toString("ddMMyyyy");
                beforeUrl = getRequest().getContextPath() + getWeeklyViewUrl() + "&amp;"
                        + getFirstDayParameter() + "="
                        + firstDay.minusDays(Lesson.NUMBER_OF_DAYS_IN_WEEK).toString("ddMMyyyy");
                builder.append(/*from  ww  w .  j a va  2s.c  om*/
                        "<tr><td class=\"tcalendarlinks\"></td><td colspan=\"7\" class=\"acenter tcalendarlinks\"> <span class=\"smalltxt\"><a href=\"")
                        .append(beforeUrl).append("\">").append("&lt;&lt; ")
                        .append(getMessage("label.previous.week")).append("</a>");
                builder.append(" , ").append("<a href=\"").append(nextUrl).append("\">")
                        .append(getMessage("label.next.week")).append(" &gt;&gt;").append("</a>")
                        .append("</span></td><td class=\"tcalendarlinks\"></td><td class=\"tcalendarlinks\"></td></tr>");
            }
            break;

        case DAILY:

            if (!StringUtils.isEmpty(getDailyViewUrl())) {
                nextUrl = getRequest().getContextPath() + getDailyViewUrl() + "&amp;" + getFirstDayParameter()
                        + "=" + firstDay.plusDays(1).toString("ddMMyyyy");
                beforeUrl = getRequest().getContextPath() + getDailyViewUrl() + "&amp;" + getFirstDayParameter()
                        + "=" + firstDay.minusDays(1).toString("ddMMyyyy");
                builder.append(
                        "<tr><td class=\"tcalendarlinks\"></td><td class=\"acenter tcalendarlinks\"><span class=\"smalltxt\"><a href=\"")
                        .append(beforeUrl).append("\">").append("&lt;&lt; ")
                        .append(getMessage("label.previous.day")).append("</a>");
                builder.append(" , ").append("<a href=\"").append(nextUrl).append("\">")
                        .append(getMessage("label.next.day")).append(" &gt;&gt;").append("</a>")
                        .append("</span></td><td class=\"tcalendarlinks\"></td><td class=\"tcalendarlinks\"></td></tr>");
            }
            break;

        case MONTHLY:

            if (!StringUtils.isEmpty(getMonthlyViewUrl())) {
                DateTime month = firstDay.toDateTimeAtMidnight();
                DateTime firstDayOfMonth = (month.getDayOfMonth() != 1) ? month.withDayOfMonth(1) : month;
                DateTime lastDayOfMonth = firstDayOfMonth.plusMonths(1).minusDays(1);
                int monthNumberOfDays = Days.daysBetween(firstDayOfMonth, lastDayOfMonth).getDays() + 1;
                nextUrl = getRequest().getContextPath() + getMonthlyViewUrl() + "&amp;" + getFirstDayParameter()
                        + "=" + firstDay.plusMonths(1).toString("ddMMyyyy");
                beforeUrl = getRequest().getContextPath() + getMonthlyViewUrl() + "&amp;"
                        + getFirstDayParameter() + "=" + firstDay.minusMonths(1).toString("ddMMyyyy");
                builder.append("<tr><td class=\"tcalendarlinks\"></td><td colspan=\"").append(monthNumberOfDays)
                        .append("\" class=\"acenter tcalendarlinks\"><span class=\"smalltxt\"><a href=\"")
                        .append(beforeUrl).append("\">").append("&lt;&lt; ")
                        .append(getMessage("label.previous.month")).append("</a>");
                builder.append(" , ").append("<a href=\"").append(nextUrl).append("\">")
                        .append(getMessage("label.next.month")).append(" &gt;&gt;").append("</a>")
                        .append("</span></td><td class=\"tcalendarlinks\"></td><td class=\"tcalendarlinks\"></td></tr>");
            }
            break;

        case YEAR_DAILY:

            if (!StringUtils.isEmpty(getMonthlyViewUrl())) {
                DateTime month = firstDay.toDateTimeAtMidnight();
                DateTime firstDayOfMonth = (month.getDayOfMonth() != 1) ? month.withDayOfMonth(1) : month;
                DateTime lastDayOfMonth = firstDayOfMonth.plusMonths(1).minusDays(1);
                int monthNumberOfDays = Days.daysBetween(firstDayOfMonth, lastDayOfMonth).getDays() + 1;
                nextUrl = getRequest().getContextPath() + getMonthlyViewUrl() + "&amp;" + getFirstDayParameter()
                        + "=" + firstDay.plusMonths(1).toString("ddMMyyyy");
                beforeUrl = getRequest().getContextPath() + getMonthlyViewUrl() + "&amp;"
                        + getFirstDayParameter() + "=" + firstDay.minusMonths(1).toString("ddMMyyyy");
                builder.append("<tr><td class=\"tcalendarlinks\"></td><td colspan=\"").append(monthNumberOfDays)
                        .append("\" class=\"acenter tcalendarlinks\"><span class=\"smalltxt\"><a href=\"")
                        .append(beforeUrl).append("\">").append("&lt;&lt; ")
                        .append(getMessage("label.previous.month")).append("</a>");
                builder.append(" , ").append("<a href=\"").append(nextUrl).append("\">")
                        .append(getMessage("label.next.month")).append(" &gt;&gt;").append("</a>")
                        .append("</span></td><td class=\"tcalendarlinks\"></td><td class=\"tcalendarlinks\"></td></tr>");
            }
            break;

        default:
            break;
        }
    }
}