⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dailycalendar.java

📁 Quartz is a full-featured, open source job scheduling system that can be integrated with, or used al
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
package org.quartz.impl.calendar;import java.text.NumberFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.StringTokenizer;import java.util.TimeZone;/** * This implementation of the Calendar excludes (or includes - see below) a  * specified time range each day. For example, you could use this calendar to  * exclude business hours (8AM - 5PM) every day. Each <CODE>DailyCalendar</CODE> * only allows a single time range to be specified, and that time range may not * cross daily boundaries (i.e. you cannot specify a time range from 8PM - 5AM). * If the property <CODE>invertTimeRange</CODE> is <CODE>false</CODE> (default),  * the time range defines a range of times in which triggers are not allowed to * fire. If <CODE>invertTimeRange</CODE> is <CODE>true</CODE>, the time range * is inverted &ndash; that is, all times <I>outside</I> the defined time range * are excluded. * <P> * Note when using <CODE>DailyCalendar</CODE>, it behaves on the same principals * as, for example, {@link org.quartz.impl.calendar.WeeklyCalendar  * WeeklyCalendar}. <CODE>WeeklyCalendar</CODE> defines a set of days that are * excluded <I>every week</I>. Likewise, <CODE>DailyCalendar</CODE> defines a  * set of times that are excluded <I>every day</I>. *  * @author Mike Funk, Aaron Craven */public class DailyCalendar extends BaseCalendar {    static final long serialVersionUID = -7561220099904944039L;        private static final String invalidHourOfDay = "Invalid hour of day: ";    private static final String invalidMinute = "Invalid minute: ";    private static final String invalidSecond = "Invalid second: ";    private static final String invalidMillis = "Invalid millis: ";    private static final String invalidTimeRange = "Invalid time range: ";    private static final String separator = " - ";    private static final long oneMillis = 1;    private static final String colon = ":";    /** @deprecated The use of <code>name</code> is no longer supported. */    private String name;        private int rangeStartingHourOfDay;    private int rangeStartingMinute;    private int rangeStartingSecond;    private int rangeStartingMillis;    private int rangeEndingHourOfDay;    private int rangeEndingMinute;    private int rangeEndingSecond;    private int rangeEndingMillis;        private boolean invertTimeRange = false;    /**     * Create a <CODE>DailyCalendar</CODE> with a time range defined by the     * specified strings and no <CODE>baseCalendar</CODE>.      * <CODE>rangeStartingTime</CODE> and <CODE>rangeEndingTime</CODE>     * must be in the format &quot;HH:MM[:SS[:mmm]]&quot; where:     * <UL><LI>HH is the hour of the specified time. The hour should be     *         specified using military (24-hour) time and must be in the range     *         0 to 23.</LI>     *     <LI>MM is the minute of the specified time and must be in the range     *         0 to 59.</LI>     *     <LI>SS is the second of the specified time and must be in the range     *         0 to 59.</LI>     *     <LI>mmm is the millisecond of the specified time and must be in the     *         range 0 to 999.</LI>     *     <LI>items enclosed in brackets ('[', ']') are optional.</LI>     *     <LI>The time range starting time must be before the time range ending     *         time. Note this means that a time range may not cross daily      *         boundaries (10PM - 2AM)</LI>       * </UL>     *      * <p>     * <b>Note:</b> This <CODE>DailyCalendar</CODE> will use the      * <code>{@link TimeZone#getDefault()}</code> time zone unless an explicit      * time zone is set via <code>{@link BaseCalendar#setTimeZone(TimeZone)}</code>     * </p>     *       * @param rangeStartingTime a String representing the starting time for the     *                          time range     * @param rangeEndingTime   a String representing the ending time for the     *                          the time range     */    public DailyCalendar(String rangeStartingTime,                         String rangeEndingTime) {        super();        setTimeRange(rangeStartingTime, rangeEndingTime);    }    /**     * Create a <CODE>DailyCalendar</CODE> with a time range defined by the     * specified strings and the specified <CODE>baseCalendar</CODE>.      * <CODE>rangeStartingTime</CODE> and <CODE>rangeEndingTime</CODE>     * must be in the format &quot;HH:MM[:SS[:mmm]]&quot; where:     * <UL><LI>HH is the hour of the specified time. The hour should be     *         specified using military (24-hour) time and must be in the range     *         0 to 23.</LI>     *     <LI>MM is the minute of the specified time and must be in the range     *         0 to 59.</LI>     *     <LI>SS is the second of the specified time and must be in the range     *         0 to 59.</LI>     *     <LI>mmm is the millisecond of the specified time and must be in the     *         range 0 to 999.</LI>     *     <LI>items enclosed in brackets ('[', ']') are optional.</LI>     *     <LI>The time range starting time must be before the time range ending     *         time. Note this means that a time range may not cross daily      *         boundaries (10PM - 2AM)</LI>       * </UL>     *      * <p>     * <b>Note:</b> This <CODE>DailyCalendar</CODE> will use the      * <code>{@link TimeZone#getDefault()}</code> time zone unless an explicit      * time zone is set via <code>{@link BaseCalendar#setTimeZone(TimeZone)}</code>     * </p>     *      * @param baseCalendar      the base calendar for this calendar instance     *                          &ndash; see {@link BaseCalendar} for more     *                          information on base calendar functionality     * @param rangeStartingTime a String representing the starting time for the     *                          time range     * @param rangeEndingTime   a String representing the ending time for the     *                          time range     */    public DailyCalendar(org.quartz.Calendar baseCalendar,                         String rangeStartingTime,                         String rangeEndingTime) {        super(baseCalendar);        setTimeRange(rangeStartingTime, rangeEndingTime);    }    /**     * Create a <CODE>DailyCalendar</CODE> with a time range defined by the     * specified values and no <CODE>baseCalendar</CODE>. Values are subject to     * the following validations:     * <UL><LI>Hours must be in the range 0-23 and are expressed using military     *         (24-hour) time.</LI>     *     <LI>Minutes must be in the range 0-59</LI>     *     <LI>Seconds must be in the range 0-59</LI>     *     <LI>Milliseconds must be in the range 0-999</LI>     *     <LI>The time range starting time must be before the time range ending     *         time. Note this means that a time range may not cross daily      *         boundaries (10PM - 2AM)</LI>       * </UL>     *      * <p>     * <b>Note:</b> This <CODE>DailyCalendar</CODE> will use the      * <code>{@link TimeZone#getDefault()}</code> time zone unless an explicit      * time zone is set via <code>{@link BaseCalendar#setTimeZone(TimeZone)}</code>     * </p>     *      * @param rangeStartingHourOfDay the hour of the start of the time range     * @param rangeStartingMinute    the minute of the start of the time range     * @param rangeStartingSecond    the second of the start of the time range     * @param rangeStartingMillis    the millisecond of the start of the time      *                               range     * @param rangeEndingHourOfDay   the hour of the end of the time range     * @param rangeEndingMinute      the minute of the end of the time range     * @param rangeEndingSecond      the second of the end of the time range     * @param rangeEndingMillis      the millisecond of the start of the time      *                               range     */    public DailyCalendar(int rangeStartingHourOfDay,                         int rangeStartingMinute,                         int rangeStartingSecond,                         int rangeStartingMillis,                         int rangeEndingHourOfDay,                         int rangeEndingMinute,                         int rangeEndingSecond,                         int rangeEndingMillis) {        super();        setTimeRange(rangeStartingHourOfDay,                     rangeStartingMinute,                     rangeStartingSecond,                     rangeStartingMillis,                     rangeEndingHourOfDay,                     rangeEndingMinute,                     rangeEndingSecond,                     rangeEndingMillis);    }        /**     * Create a <CODE>DailyCalendar</CODE> with a time range defined by the     * specified values and the specified <CODE>baseCalendar</CODE>. Values are     * subject to the following validations:     * <UL><LI>Hours must be in the range 0-23 and are expressed using military     *         (24-hour) time.</LI>     *     <LI>Minutes must be in the range 0-59</LI>     *     <LI>Seconds must be in the range 0-59</LI>     *     <LI>Milliseconds must be in the range 0-999</LI>     *     <LI>The time range starting time must be before the time range ending     *         time. Note this means that a time range may not cross daily     *         boundaries (10PM - 2AM)</LI>       * </UL>      *      * <p>     * <b>Note:</b> This <CODE>DailyCalendar</CODE> will use the      * <code>{@link TimeZone#getDefault()}</code> time zone unless an explicit      * time zone is set via <code>{@link BaseCalendar#setTimeZone(TimeZone)}</code>     * </p>     *      * @param baseCalendar              the base calendar for this calendar     *                                  instance &ndash; see      *                                  {@link BaseCalendar} for more      *                                  information on base calendar      *                                  functionality     * @param rangeStartingHourOfDay the hour of the start of the time range     * @param rangeStartingMinute    the minute of the start of the time range     * @param rangeStartingSecond    the second of the start of the time range     * @param rangeStartingMillis    the millisecond of the start of the time      *                               range     * @param rangeEndingHourOfDay   the hour of the end of the time range     * @param rangeEndingMinute      the minute of the end of the time range     * @param rangeEndingSecond      the second of the end of the time range     * @param rangeEndingMillis      the millisecond of the start of the time      *                               range     */    public DailyCalendar(org.quartz.Calendar baseCalendar,                         int rangeStartingHourOfDay,                         int rangeStartingMinute,                         int rangeStartingSecond,                         int rangeStartingMillis,                         int rangeEndingHourOfDay,                         int rangeEndingMinute,                         int rangeEndingSecond,                         int rangeEndingMillis) {        super(baseCalendar);        setTimeRange(rangeStartingHourOfDay,                     rangeStartingMinute,                     rangeStartingSecond,                     rangeStartingMillis,                     rangeEndingHourOfDay,                     rangeEndingMinute,                     rangeEndingSecond,                     rangeEndingMillis);    }    /**     * Create a <CODE>DailyCalendar</CODE> with a time range defined by the     * specified <CODE>java.util.Calendar</CODE>s and no      * <CODE>baseCalendar</CODE>. The Calendars are subject to the following     * considerations:     * <UL><LI>Only the time-of-day fields of the specified Calendars will be     *         used (the date fields will be ignored)</LI>     *     <LI>The starting time must be before the ending time of the defined     *         time range. Note this means that a time range may not cross     *         daily boundaries (10PM - 2AM). <I>(because only time fields are     *         are used, it is possible for two Calendars to represent a valid     *         time range and      *         <CODE>rangeStartingCalendar.after(rangeEndingCalendar) ==      *         true</CODE>)</I></LI>       * </UL>      *      * <p>     * <b>Note:</b> This <CODE>DailyCalendar</CODE> will use the      * <code>{@link TimeZone#getDefault()}</code> time zone unless an explicit      * time zone is set via <code>{@link BaseCalendar#setTimeZone(TimeZone)}</code>     * </p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -