Here you can find the source of getLastWeekDay(int weekDay)
Parameter | Description |
---|---|
weekDay | the week day you want, from 1(SUNDAY) to 7(SATURDAY) |
public static final Date getLastWeekDay(int weekDay)
//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; } }