Example usage for org.jfree.data.time Month Month

List of usage examples for org.jfree.data.time Month Month

Introduction

In this page you can find the example usage for org.jfree.data.time Month Month.

Prototype

public Month(Date time) 

Source Link

Document

Constructs a new Month instance, based on a date/time and the default time zone.

Usage

From source file:Perfil_Deportivo.TimeSeriesChartDemo1.java

/**
 * Creates a dataset, consisting of two series of monthly data.
 *
 * @return The dataset./*www  . j  a  v  a2  s.c  o  m*/
 */
private static XYDataset createDataset() {

    TimeSeries s1 = new TimeSeries("L&G European Index Trust");

    SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
    String strFecha = "1/01/2000";
    Date fechaDate = null;
    try {
        fechaDate = formato.parse(strFecha);
        // s1.add(new ,2);
    } catch (ParseException ex) {

    }

    //s1.add(new Week(1, 1), null);
    s1.add(new Month(fechaDate), 167.3);
    s1.add(new Month(2, 2001), 181.8);
    s1.add(new Month(3, 2001), 167.3);
    s1.add(new Month(4, 2001), 153.8);
    s1.add(new Month(5, 2001), 167.6);
    s1.add(new Month(6, 2001), 158.8);
    s1.add(new Month(7, 2001), 148.3);
    s1.add(new Month(8, 2001), 153.9);
    s1.add(new Month(9, 2001), 142.7);
    s1.add(new Month(10, 2001), 123.2);
    s1.add(new Month(11, 2001), 131.8);
    s1.add(new Month(12, 2001), 139.6);
    s1.add(new Month(1, 2002), 142.9);
    s1.add(new Month(2, 2002), 138.7);
    s1.add(new Month(3, 2002), 137.3);
    s1.add(new Month(4, 2002), 143.9);
    s1.add(new Month(5, 2002), 139.8);
    s1.add(new Month(6, 2002), 137.0);
    s1.add(new Month(7, 2002), 132.8);

    TimeSeries s2 = new TimeSeries("L&G UK Index Trust");
    s2.add(new Month(2, 2001), 129.6);
    s2.add(new Month(3, 2001), 123.2);
    s2.add(new Month(4, 2001), 117.2);
    s2.add(new Month(5, 2001), 124.1);
    s2.add(new Month(6, 2001), 122.6);
    s2.add(new Month(7, 2001), 119.2);
    s2.add(new Month(8, 2001), 116.5);
    s2.add(new Month(9, 2001), 112.7);
    s2.add(new Month(10, 2001), 101.5);
    s2.add(new Month(11, 2001), 106.1);
    s2.add(new Month(12, 2001), 110.3);
    s2.add(new Month(1, 2002), 111.7);
    s2.add(new Month(2, 2002), 111.0);
    s2.add(new Month(3, 2002), 109.6);
    s2.add(new Month(4, 2002), 113.2);
    s2.add(new Month(5, 2002), 111.6);
    s2.add(new Month(6, 2002), 108.8);
    s2.add(new Month(7, 2002), 101.6);

    TimeSeries s3 = new TimeSeries("andres2255");
    s3.add(new Month(2, 2001), 129.6);

    s3.add(new Month(10, 2001), 106.1);
    s3.add(new Month(1, 2002), 111.7);
    s3.add(new Month(2, 2002), 111.0);

    // ******************************************************************
    //  More than 150 demo applications are included with the JFreeChart
    //  Developer Guide...for more information, see:
    //
    //  >   http://www.object-refinery.com/jfreechart/guide.html
    //
    // ******************************************************************

    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(s1);
    dataset.addSeries(s2);
    dataset.addSeries(s3);

    return dataset;

}

From source file:org.codehaus.mojo.dashboard.report.plugin.chart.time.AbstractTimeChartStrategy.java

/**
 *
 * @param keyDate/*w w  w .  ja v  a 2s.co m*/
 * @return
 */
protected RegularTimePeriod getChartDate(Date keyDate) {
    RegularTimePeriod chartDate = null;
    if (timePeriod.equals(TimePeriod.MINUTE)) {
        chartDate = new Minute(keyDate);
    } else if (timePeriod.equals(TimePeriod.HOUR)) {
        chartDate = new Hour(keyDate);
    } else if (timePeriod.equals(TimePeriod.DAY)) {
        chartDate = new Day(keyDate);
    } else if (timePeriod.equals(TimePeriod.WEEK)) {
        chartDate = new Week(keyDate);
    } else if (timePeriod.equals(TimePeriod.MONTH)) {
        chartDate = new Month(keyDate);
    } else {
        chartDate = new Hour(keyDate);
    }
    return chartDate;
}

From source file:com.sonyericsson.jenkins.plugins.bfa.graphs.TimeSeriesChart.java

@Override
protected JFreeChart createGraph() {
    TimeTableXYDataset dataset = createDataset();
    ValueAxis xAxis = new DateAxis();
    xAxis.setLowerMargin(0.0);//from w w  w  . ja v a 2s.c  o m
    xAxis.setUpperMargin(0.0);
    Calendar lowerBound = getLowerGraphBound();
    xAxis.setRange(lowerBound.getTimeInMillis(), Calendar.getInstance().getTimeInMillis());

    NumberAxis yAxis = new NumberAxis(Y_AXIS_LABEL);
    yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

    StackedXYBarRenderer renderer = new StackedXYBarRenderer();
    renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {
        @Override
        public String generateToolTip(XYDataset dataset, int series, int item) {
            String seriesKey = dataset.getSeriesKey(series).toString();
            StringBuilder sb = new StringBuilder();

            if (seriesKey.equals(GRAPH_OTHERS)) {
                long timeInMillis = dataset.getX(series, item).longValue();
                Date time = new Date(timeInMillis);

                TimePeriod period = null;
                if (intervalSize == Calendar.DATE) {
                    period = new Day(time);
                } else if (intervalSize == Calendar.HOUR_OF_DAY) {
                    period = new Hour(time);
                } else if (intervalSize == Calendar.MONTH) {
                    period = new Month(time);
                }
                List<FailureCauseTimeInterval> excludedDataList = excludedDataForPeriod.get(period);
                if (excludedDataList != null) {
                    Collections.sort(excludedDataList, new Comparator<FailureCauseTimeInterval>() {

                        @Override
                        public int compare(FailureCauseTimeInterval o1, FailureCauseTimeInterval o2) {
                            return o2.getNumber() - o1.getNumber();
                        }
                    });
                    for (FailureCauseTimeInterval excludedData : excludedDataList) {
                        sb.append(excludedData).append(" \n");
                    }
                }
            } else {
                int number = dataset.getY(series, item).intValue();
                sb.append(seriesKey).append(": ").append(number);
            }
            return sb.toString();
        }
    });

    XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
    plot.setOrientation(PlotOrientation.VERTICAL);

    plot.setRangeAxis(yAxis);

    JFreeChart chart = new JFreeChart(graphTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true);

    return chart;
}

From source file:jgnash.ui.report.compiled.RunningAccountBalanceChart.java

private TimeSeriesCollection createTimeSeriesCollection(final Account account) {

    if (subAccountCheckBox.isSelected()) {
        LocalDate start = DateUtils.getFirstDayOfTheMonth(startDateField.getLocalDate());
        LocalDate stop = DateUtils.getLastDayOfTheMonth(endDateField.getLocalDate());
        List<LocalDate> list = DateUtils.getLastDayOfTheMonths(start, stop);
        TimeSeries t = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"),
                rb.getString("Column.Balance"));

        // For every month, calculate the total amount
        for (LocalDate date : list) {
            LocalDate d = DateUtils.getLastDayOfTheMonth(date);

            // Get the total amount for the account and every sub accounts
            // for the specified date
            BigDecimal bd_TotalAmount = calculateTotal(d, account, account.getCurrencyNode());

            // Include it in the graph
            t.add(new Month(DateUtils.asDate(date)), bd_TotalAmount);
        }//from   w  w  w.j ava 2s  .com
        return new TimeSeriesCollection(t);
    }

    List<LocalDate> list = Collections.emptyList();

    int count = account.getTransactionCount();

    if (count > 0) {
        final LocalDate start = account.getTransactionAt(0).getLocalDate();
        final LocalDate stop = account.getTransactionAt(count - 1).getLocalDate();
        list = DateUtils.getLastDayOfTheMonths(start, stop);
    }

    TimeSeries t = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"),
            rb.getString("Column.Balance"));

    AccountType type = account.getAccountType();

    for (final LocalDate date : list) {
        // get balance for the whole month
        LocalDate d = DateUtils.getLastDayOfTheMonth(date);

        BigDecimal balance = AccountBalanceDisplayManager.convertToSelectedBalanceMode(type,
                account.getBalance(d));

        t.add(new Month(DateUtils.asDate(date)), balance);
    }

    return new TimeSeriesCollection(t);
}

From source file:org.adempiere.apps.graph.ChartBuilder.java

private void addData(MChartDatasource ds) {

    String value = ds.getValueColumn();
    String category;//from   w  w w. j  av a 2s  .co  m
    String unit = "D";

    if (!chartModel.isTimeSeries())
        category = ds.getCategoryColumn();
    else {
        if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Week)) {
            unit = "W";
        } else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Month)) {
            unit = "MM";
        } else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Quarter)) {
            unit = "Q";
        } else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Year)) {
            unit = "Y";
        }

        category = " TRUNC(" + ds.getDateColumn() + ", '" + unit + "') ";
    }

    String series = DB.TO_STRING(ds.getName());
    boolean hasSeries = false;
    if (ds.getSeriesColumn() != null) {
        series = ds.getSeriesColumn();
        hasSeries = true;
    }

    String where = ds.getWhereClause();
    if (!Util.isEmpty(where)) {
        where = Env.parseContext(Env.getCtx(), chartModel.getWindowNo(), where, true);
    }

    boolean hasWhere = false;

    String sql = "SELECT " + value + ", " + category + ", " + series + " FROM " + ds.getFromClause();
    if (!Util.isEmpty(where)) {
        sql += " WHERE " + where;
        hasWhere = true;
    }

    Date currentDate = Env.getContextAsDate(Env.getCtx(), "#Date");
    Date startDate = null;
    Date endDate = null;

    int scope = chartModel.getTimeScope();
    int offset = ds.getTimeOffset();

    if (chartModel.isTimeSeries() && scope != 0) {
        offset += -scope;
        startDate = increment(currentDate, chartModel.getTimeUnit(), offset);
        endDate = increment(startDate, chartModel.getTimeUnit(), scope);
    }

    if (startDate != null && endDate != null) {
        sql += hasWhere ? " AND " : " WHERE ";
        sql += category + ">=TRUNC(" + DB.TO_DATE(new Timestamp(startDate.getTime())) + ", '" + unit
                + "') AND ";
        sql += category + "<=TRUNC(" + DB.TO_DATE(new Timestamp(endDate.getTime())) + ", '" + unit + "') ";
    }

    if (sql.indexOf('@') >= 0) {
        sql = Env.parseContext(Env.getCtx(), 0, sql, false, true);
    }

    MRole role = MRole.getDefault(Env.getCtx(), false);
    sql = role.addAccessSQL(sql, null, true, false);

    if (hasSeries)
        sql += " GROUP BY " + series + ", " + category + " ORDER BY " + series + ", " + category;
    else
        sql += " GROUP BY " + category + " ORDER BY " + category;

    log.log(Level.FINE, sql);

    PreparedStatement pstmt = null;
    ResultSet rs = null;
    TimeSeries tseries = null;
    Dataset dataset = getDataset();

    try {
        pstmt = DB.prepareStatement(sql, null);
        rs = pstmt.executeQuery();
        while (rs.next()) {

            String key = rs.getString(2);
            String seriesName = rs.getString(3);
            if (seriesName == null)
                seriesName = ds.getName();
            String queryWhere = "";
            if (hasWhere)
                queryWhere += where + " AND ";

            queryWhere += series + " = " + DB.TO_STRING(seriesName) + " AND " + category + " = ";

            if (chartModel.isTimeSeries() && dataset instanceof TimeSeriesCollection) {

                if (tseries == null || !tseries.getKey().equals(seriesName)) {
                    if (tseries != null)
                        ((TimeSeriesCollection) dataset).addSeries(tseries);

                    tseries = new TimeSeries(seriesName);
                }

                Date date = rs.getDate(2);
                RegularTimePeriod period = null;

                if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Day))
                    period = new Day(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Week))
                    period = new Week(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Month))
                    period = new Month(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Quarter))
                    period = new Quarter(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Year))
                    period = new Year(date);

                tseries.add(period, rs.getBigDecimal(1));
                key = period.toString();
                queryWhere += DB.TO_DATE(new Timestamp(date.getTime()));
            } else {
                queryWhere += DB.TO_STRING(key);
            }

            MQuery query = new MQuery(ds.getAD_Table_ID());
            String keyCol = MTable.get(Env.getCtx(), ds.getAD_Table_ID()).getKeyColumns()[0];
            String whereClause = keyCol + " IN (SELECT " + ds.getKeyColumn() + " FROM " + ds.getFromClause()
                    + " WHERE " + queryWhere + " )";
            query.addRestriction(whereClause.toString());
            query.setRecordCount(1);

            HashMap<String, MQuery> map = getQueries();

            if (dataset instanceof DefaultPieDataset) {
                ((DefaultPieDataset) dataset).setValue(key, rs.getBigDecimal(1));
                map.put(key, query);
            } else if (dataset instanceof DefaultCategoryDataset) {
                ((DefaultCategoryDataset) dataset).addValue(rs.getBigDecimal(1), seriesName, key);
                map.put(seriesName + "__" + key, query);
            } else if (dataset instanceof TimeSeriesCollection) {
                map.put(seriesName + "__" + key, query);
            }
        }
    } catch (SQLException e) {
        throw new DBException(e, sql);
    } finally {
        DB.close(rs, pstmt);
        rs = null;
        pstmt = null;
    }

    if (tseries != null)
        ((TimeSeriesCollection) dataset).addSeries(tseries);

}

From source file:com.appnativa.rare.ui.chart.jfreechart.ChartHelper.java

public static RegularTimePeriod getTimePeriod(Date date, ChartAxis.TimeUnit tm) {
    RegularTimePeriod tp;//from  w w  w  . j  a  va  2  s  .  com

    switch (tm) {
    case MILLISECOND:
        tp = new Millisecond(date);

        break;

    case SECOND:
        tp = new Second(date);

        break;

    case MINUTE:
        tp = new Minute(date);

        break;

    case HOUR:
        tp = new Hour(date);

        break;

    case WEEK:
        tp = new Week(date);

        break;

    case MONTH:
        tp = new Month(date);

        break;

    case YEAR:
        tp = new Year(date);

        break;

    default:
        tp = new Day(date);

        break;
    }

    return tp;
}

From source file:jgnash.ui.report.compiled.MonthlyAccountBalanceChart.java

private TimeSeriesCollection createTimeSeriesCollection(final Account account) {
    List<LocalDate> dates = Collections.emptyList();

    if (subAccountCheckBox.isSelected()) {
        // Getting the dates to calculate
        final LocalDate start = startDateField.getLocalDate().with(TemporalAdjusters.firstDayOfMonth());
        final LocalDate stop = endDateField.getLocalDate().with(TemporalAdjusters.lastDayOfMonth());

        dates = DateUtils.getLastDayOfTheMonths(start, stop);
        TimeSeries t = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"),
                rb.getString("Column.Balance"));

        // For every month, calculate the total amount
        for (LocalDate date : dates) {
            final LocalDate d = date.with(TemporalAdjusters.lastDayOfMonth());
            final LocalDate s = date.with(TemporalAdjusters.firstDayOfMonth());

            // Get the total amount for the account and every sub accounts for the specified date
            // and include it in the chart
            t.add(new Month(DateUtils.asDate(date)), calculateTotal(s, d, account, account.getCurrencyNode()));
        }/*from  www.  j  ava  2 s  .  c om*/

        return new TimeSeriesCollection(t);
    }

    int count = account.getTransactionCount();

    if (count > 0) {
        LocalDate start = account.getTransactionAt(0).getLocalDate();
        LocalDate stop = account.getTransactionAt(count - 1).getLocalDate();
        dates = DateUtils.getLastDayOfTheMonths(start, stop);
    }

    TimeSeries t = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"),
            rb.getString("Column.Balance"));

    AccountType type = account.getAccountType();

    for (LocalDate localDate : dates) {
        // get balance for the whole month
        LocalDate d = localDate.with(TemporalAdjusters.lastDayOfMonth());
        LocalDate s = localDate.with(TemporalAdjusters.firstDayOfMonth());

        BigDecimal balance = AccountBalanceDisplayManager.convertToSelectedBalanceMode(type,
                account.getBalance(s, d));
        t.add(new Month(DateUtils.asDate(localDate)), balance);
    }

    return new TimeSeriesCollection(t);
}

From source file:sk.uniza.fri.pds.spotreba.energie.gui.MainGui.java

private void showSpendingStatisticsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showSpendingStatisticsActionPerformed
    final SpendingStatisticsParameters params = new SpendingStatisticsParameters();
    int option = showUniversalInputDialog(params, "Vvoj spotreby");
    if (option == JOptionPane.OK_OPTION) {
        new SwingWorker<List, RuntimeException>() {
            @Override/*from   ww w  .j  av  a 2 s . c om*/
            protected List doInBackground() throws Exception {
                try {
                    return SeHistoriaService.getInstance().getSpendingStatistics(params);
                } catch (RuntimeException e) {
                    publish(e);
                    return null;
                }
            }

            @Override
            protected void done() {
                try {
                    List<KrokSpotreby> spendingStatistics = get();
                    if (spendingStatistics != null) {
                        final TimeSeries series = new TimeSeries("");
                        final String title = "Vvoj spotreby";
                        for (KrokSpotreby krok : spendingStatistics) {
                            series.add(new Month(krok.getDatumOd()), krok.getSpotreba());
                        }
                        final IntervalXYDataset dataset = (IntervalXYDataset) new TimeSeriesCollection(series);
                        JFreeChart chart = ChartFactory.createXYBarChart(title, // title
                                "", // x-axis label
                                true, // date axis?
                                "", // y-axis label
                                dataset, // data
                                PlotOrientation.VERTICAL, // orientation
                                false, // create legend?
                                true, // generate tooltips?
                                false // generate URLs?
                        );

                        // Set date axis style
                        DateAxis axis = (DateAxis) ((XYPlot) chart.getPlot()).getDomainAxis();
                        axis.setDateFormatOverride(new SimpleDateFormat("yyyy"));
                        DateFormat formatter = new SimpleDateFormat("yyyy");
                        DateTickUnit unit = new DateTickUnit(DateTickUnitType.YEAR, 1, formatter);
                        axis.setTickUnit(unit);
                        JOptionPane.showMessageDialog(null, new ChartPanel(chart));
                    }
                } catch (InterruptedException | ExecutionException ex) {
                    Logger.getLogger(MainGui.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            @Override
            protected void process(List<RuntimeException> chunks) {
                if (chunks.size() > 0) {
                    showException("Chyba", chunks.get(0));
                }
            }

        }.execute();
    }
}

From source file:jgnash.ui.report.compiled.MonthlyAccountBalanceChartCompare.java

private TimeSeriesCollection createTimeSeriesCollection(final Account account, final Account a2) {
    //always use this method
    //if (subAccountCheckBox.isApproved()) {
    // Getting the dates to calculate
    LocalDate start = startDateField.getLocalDate().with(TemporalAdjusters.firstDayOfMonth());
    LocalDate stop = endDateField.getLocalDate().with(TemporalAdjusters.lastDayOfMonth());

    List<LocalDate> list = DateUtils.getLastDayOfTheMonths(start, stop);

    TimeSeries t = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"),
            rb.getString("Column.Balance"));
    TimeSeries t2 = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"),
            rb.getString("Column.Balance"));

    // For every month, calculate the total amount
    for (final LocalDate localDate : list) {
        final LocalDate d = localDate.with(TemporalAdjusters.lastDayOfMonth());
        final LocalDate s = localDate.with(TemporalAdjusters.firstDayOfMonth());

        // Get the total amount for the account and every sub accounts
        // for the specified date
        //BigDecimal bd_TotalAmount = calculateTotal(s, d, account, account.getCurrencyNode());
        BigDecimal bd_TotalAmount = calculateTotal(s, d, account, subAccountCheckBox.isSelected(),
                account.getCurrencyNode());

        // Include it in the graph
        t.add(new Month(DateUtils.asDate(localDate)), totalModulus(bd_TotalAmount, account.getAccountType()));
        if (jcb_compare.isSelected()) {
            bd_TotalAmount = calculateTotal(s, d, a2, subAccountCheckBox.isSelected(),
                    account.getCurrencyNode());
            t2.add(new Month(DateUtils.asDate(localDate)), totalModulus(bd_TotalAmount, a2.getAccountType()));
        }//from  w w w . java2 s.c om
    }

    TimeSeriesCollection tsc = new TimeSeriesCollection();
    tsc.addSeries(t);
    if (jcb_compare.isSelected()) {
        tsc.addSeries(t2);
    }

    return tsc;
    /*
        return new TimeSeriesCollection(t);
    }
            
    int count = account.getTransactionCount();
            
    if (count > 0) {
        Date start = account.getTransactionAt(0).getDate();
        Date stop = account.getTransactionAt(count - 1).getDate();
        list = DateUtils.getLastDayOfTheMonths(start, stop);
    }
            
    TimeSeries t = new TimeSeries(rb.getString("Column.Month"), rb.getString("Column.Month"), rb.getString("Column.Balance"));
            
    AccountType type = account.getAccountType();
            
    for (Date aList : list) {
        // get balance for the whole month
        Date d = DateUtils.getLastDayOfTheMonth(aList);
        Date s = DateUtils.getFirstDayOfTheMonth(aList);
            
        BigDecimal balance = AccountBalanceDisplayManager.convertToSelectedBalanceMode(type, account.getBalance(s, d));
        t.add(new Month(aList), balance);
    }
            
    return new TimeSeriesCollection(t);
    */
}

From source file:no.met.jtimeseries.chart.Utility.java

/**
 * Return regulartimeperiod for create dataset
 * /*from  ww w.j  a v  a 2s .  c o  m*/
 * @param timeBase
 * @param time
 * @return
 */
public static RegularTimePeriod getPeriod(TimeBase timeBase, Date date) {
    RegularTimePeriod period = null;

    if (timeBase == TimeBase.YEAR)
        period = new Year(date);
    else if (timeBase == TimeBase.MONTH)
        period = new Month(date);
    else if (timeBase == TimeBase.DAY)
        period = new Day(date);
    else if (timeBase == TimeBase.HOUR)
        period = new Hour(date);
    else if (timeBase == TimeBase.MINUTE)
        period = new Minute(date);
    else if (timeBase == TimeBase.SECOND)
        period = new Second(date);
    else if (timeBase == TimeBase.HOUR_3)
        return new FlexibleHour(date, 3);
    else if (timeBase == TimeBase.HOUR_6)
        return new FlexibleHour(date, 6);
    else if (timeBase == TimeBase.HOUR_12)
        return new FlexibleHour(date, 12);
    else if (timeBase == TimeBase.HOUR_24)
        return new FlexibleHour(date, 24);

    return period;
}