/**
 *
 *
 * @author Travis reeder
 * Date: Nov 12, 2002
 * Time: 7:44:26 PM
 * @version 0.1
 */
package com.spaceprogram.util;

import java.util.Date;
import java.util.Calendar;

public class CalendarUtils {

    public static long getRange(int field, Date from, Date to) {
        long ret = to.getTime() - from.getTime(); // now has difference in milliseconds
        if (field == Calendar.DAY_OF_YEAR
                || field == Calendar.DAY_OF_MONTH
                || field == Calendar.DAY_OF_WEEK_IN_MONTH
                || field == Calendar.DAY_OF_WEEK) {
            // divide milliseconds by number of ms in a day
            ret = (ret / (1000 * 60 * 60 * 24));

        } else if (field == Calendar.WEEK_OF_MONTH
                || field == Calendar.WEEK_OF_YEAR) {
            ret = (ret / (1000 * 60 * 60 * 24 * 7));
        } else if (field == Calendar.MONTH) {
            // can't pick a single number here so going to walk through this
            Calendar calfrom = Calendar.getInstance();
            calfrom.setTime(from);
            Calendar calto = Calendar.getInstance();
            calto.setTime(to);
            long monthcount = 0;
            calfrom.add(Calendar.MONTH, 1); // start with it adding a month up first so monthcount doesn't increment first time
            while ((calfrom.getTime().getTime()) < (calto.getTime().getTime())) {
                calfrom.add(Calendar.MONTH, 1);
                monthcount++;

            }
            return monthcount;

        }
        return ret;
    }

}

