Java Week Day getPreviousDay(long date, int startOfWeek)

Here you can find the source of getPreviousDay(long date, int startOfWeek)

Description

Returns the first day before date that has the day of week matching startOfWeek.

License

Open Source License

Parameter

Parameter Description
date Base date
startOfWeek Calendar constant correspoding to start of week.

Return

start of week, return value will have 0 hours, 0 minutes, 0 seconds and 0 ms.

Declaration

public static long getPreviousDay(long date, int startOfWeek) 

Method Source Code

//package com.java2s;
/*/* w ww  .  ja  v  a  2s  .co  m*/
 * $Id: DateUtils.java,v 1.1 2004/08/12 00:24:33 dmouse Exp $
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

import java.util.*;

public class Main {
    private static Calendar CALENDAR = Calendar.getInstance();

    /**
     * Returns the first day before <code>date</code> that has the
     * day of week matching <code>startOfWeek</code>.  For example, if you
     * want to find the previous monday relative to <code>date</code> you
     * would call <code>getPreviousDay(date, Calendar.MONDAY)</code>.
     *
     * @param date Base date
     * @param startOfWeek Calendar constant correspoding to start of week.
     * @return start of week, return value will have 0 hours, 0 minutes,
     *         0 seconds and 0 ms.
     * 
     */
    public static long getPreviousDay(long date, int startOfWeek) {
        return getDay(date, startOfWeek, -1);
    }

    private static long getDay(long date, int startOfWeek, int increment) {
        Calendar calendar = CALENDAR;
        synchronized (calendar) {
            calendar.setTimeInMillis(date);
            int day = calendar.get(Calendar.DAY_OF_WEEK);
            // Normalize the view starting date to a week starting day
            while (day != startOfWeek) {
                calendar.add(Calendar.DATE, increment);
                day = calendar.get(Calendar.DAY_OF_WEEK);
            }
            return startOfDayInMillis(calendar.getTimeInMillis());
        }
    }

    /**
    * Returns day in millis with the hours, milliseconds, seconds and minutes
    * set to 0.
    *
    * @param date long used in calculating start of day
    * @return Start of <code>date</code>
    */
    public static long startOfDayInMillis(long date) {
        Calendar calendar = CALENDAR;
        synchronized (calendar) {
            calendar.setTimeInMillis(date);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            return calendar.getTimeInMillis();
        }
    }
}

Related

  1. getMonday(String date, int weekDay)
  2. getMondayAfter(Date date)
  3. getMondayOfThisWeek()
  4. getNextDayOfweek()
  5. getPreDay()
  6. getPreviousFriday(String date)
  7. getPreviousMonday(Date date, int days)
  8. getPreviousOrNextDay(String time, int dayNum)
  9. getPreWeekLastDay()