Java Calendar Year isSameWeekOfYear(Calendar calendar1, Calendar calendar2)

Here you can find the source of isSameWeekOfYear(Calendar calendar1, Calendar calendar2)

Description

is Same Week Of Year

License

Open Source License

Declaration

public static boolean isSameWeekOfYear(Calendar calendar1, Calendar calendar2) 

Method Source Code


//package com.java2s;
/*//from  www  .  j  a  v a2  s .  co  m
 * Copyright 2009 Yodlee, Inc.  All Rights Reserved.  Your use of this code 
 * requires a license from Yodlee.  Any such license to this code is 
 * restricted to evaluation/illustrative purposes only. It is not intended 
 * for use in a production environment, and Yodlee disclaims all warranties 
 * and/or support obligations concerning this code, regardless of the terms 
 * of any other agreements between Yodlee and you."
 */

import java.util.Calendar;

public class Main {
    public static boolean isSameWeekOfYear(Calendar calendar1, Calendar calendar2) {

        boolean sameWeek = false;

        // if same year check if same week
        if (getYear(calendar1) == getYear(calendar2)) {
            if (getWeek(calendar1) == getWeek(calendar2))
                sameWeek = true;
        }
        /*
         * else if different years check if the two points fall in the same
         * week. e.g : 29th December 2003 and 2nd January 2004 fall in different
         * years but same week
         */
        else {
            Calendar calendar1Temp = (Calendar) calendar1.clone();
            Calendar calendar2Temp = (Calendar) calendar2.clone();
            setTimeAsFirstDayOfWeek(calendar1Temp);
            setTimeAsFirstDayOfWeek(calendar2Temp);
            if (isSameDayOfYear(calendar1Temp, calendar2Temp))
                sameWeek = true;
        }

        return sameWeek;
    }

    public static int getYear(Calendar calendar) {
        return calendar.get(Calendar.YEAR);
    }

    public static int getWeek(Calendar calendar) {
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }

    public static void setTimeAsFirstDayOfWeek(Calendar calendar) {

        int monthBeforeSet = calendar.get(Calendar.MONTH);
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
        int monthAfterSet = calendar.get(Calendar.MONTH);

        // if year changes setMinimalDaysInFirstWeek for New Year
        if (monthBeforeSet == Calendar.JANUARY && monthAfterSet == Calendar.DECEMBER) {
            calendar.setMinimalDaysInFirstWeek(calculateMinimalDaysInFirstWeek(calendar));
        }
        normalise(calendar);
    }

    public static boolean isSameDayOfYear(Calendar calendar1, Calendar calendar2) {

        return (getYear(calendar1) == getYear(calendar2)) && (getDay(calendar1) == getDay(calendar2));
    }

    public static int calculateMinimalDaysInFirstWeek(Calendar calendar) {

        Calendar temp = (Calendar) calendar.clone();
        temp.set(Calendar.DAY_OF_YEAR, 1);
        int firstDayOfJan = temp.get(Calendar.DAY_OF_WEEK);
        return 8 - firstDayOfJan;
    }

    public static void normalise(Calendar calendar) {

        Calendar tempCalendar = (Calendar) calendar.clone();
        calendar.clear();
        calendar.set(Calendar.YEAR, tempCalendar.get(Calendar.YEAR));
        calendar.set(Calendar.DAY_OF_YEAR, tempCalendar.get(Calendar.DAY_OF_YEAR));
    }

    public static int getDay(Calendar calendar) {
        return calendar.get(Calendar.DAY_OF_YEAR);
    }
}

Related

  1. getYearForWeek(final Calendar cal)
  2. getYearList(Calendar currDate)
  3. isBeforeDay(Calendar date1, Calendar date2, boolean ignoreYear)
  4. isSameDay(Calendar date1, Calendar date2, boolean ignoreYear)
  5. isSameDayOfYear(Calendar calendar1, Calendar calendar2)
  6. isToThisDayOrLater(int year, int month, int day, java.util.Calendar start, java.util.Calendar end)
  7. isWithinYears(int year, java.util.Calendar start, java.util.Calendar end)
  8. parseCalendar(int year, int month, double day, TimeZone zone)
  9. sameYear(Calendar one, Calendar two)