Java Week Day getLastWeekDay(int weekDay)

Here you can find the source of getLastWeekDay(int weekDay)

Description

Get the last date in the specified week day counted from today.

License

Apache License

Parameter

Parameter Description
weekDay the week day you want, from 1(SUNDAY) to 7(SATURDAY)

Return

the date

Declaration

public static final Date getLastWeekDay(int weekDay) 

Method Source Code

//package com.java2s;
/**/*  w w  w . ja va 2s .  c  o  m*/
 * DateTimeUtil.java
 *
 * Copyright 2010 Niolex, Inc.
 *
 * Niolex licenses this file to you under the Apache License, version 2.0
 * (the "License"); you may not use this file except in compliance with the
 * License.  You may obtain a copy of the License at:
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class Main {
    public static final int SECOND = 1000;
    public static final int MINUTE = 60 * SECOND;
    private static TimeZone TIME_ZONE;

    /**
     * Get the last date in the specified week day counted from today.
     * You can use {@link Calendar#DAY_OF_WEEK} to specify the week day.
     *
     * @param weekDay the week day you want, from 1(SUNDAY) to 7(SATURDAY)
     * @return the date
     * @see Calendar#DAY_OF_WEEK
     */
    public static final Date getLastWeekDay(int weekDay) {
        return getLastWeekDay(weekDay, new Date());
    }

    /**
     * Get the last date has the same week day as the specified date.
     *
     * @param date the specified date
     * @return the date
     * @see Calendar#DAY_OF_WEEK
     */
    public static final Date getLastWeekDay(Date date) {
        if (date == null)
            throw new IllegalArgumentException("The parameter [date] should not be null!");
        GregorianCalendar cal = getCalender(date, true);
        cal.add(Calendar.DAY_OF_MONTH, -7);

        return cal.getTime();
    }

    /**
     * Get the last date in the specified week day counted from the specified end date.
     * You can use {@link Calendar#DAY_OF_WEEK} to specify the week day.
     *
     * @param weekDay the week day you want, from 1(SUNDAY) to 7(SATURDAY)
     * @param end the specified end date
     * @return the date
     * @see Calendar#DAY_OF_WEEK
     */
    public static final Date getLastWeekDay(int weekDay, Date end) {
        if (end == null)
            throw new IllegalArgumentException("The parameter [end] should not be null!");
        GregorianCalendar cal = getCalender(end, true);
        cal.set(Calendar.DAY_OF_WEEK, weekDay);

        if (!cal.getTime().before(end)) {
            cal.add(Calendar.DAY_OF_MONTH, -7);
        }
        return cal.getTime();
    }

    public static final GregorianCalendar getCalender() {
        return getCalender(new Date(), true);
    }

    public static final GregorianCalendar getCalender(Date date, boolean cleanTime) {
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(date);
        if (TIME_ZONE != null) {
            cal.setTimeZone(TIME_ZONE);
        }
        if (cleanTime) {
            cal.set(Calendar.MILLISECOND, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.HOUR_OF_DAY, 0);
        }
        return cal;
    }

    public static final void setTimeZone(TimeZone timeZone) {
        TIME_ZONE = timeZone;
    }
}

Related

  1. getFriday(Date date)
  2. getLastDayOfCurrWeek()
  3. getLastDayOfWeek(int year, int month)
  4. getLastSundayBeforeThisWeek()
  5. getLastWeekday()
  6. getLastWeekDay(int weekDay)
  7. getLastWeekMs()
  8. getMon()
  9. getMonday(String date)