01: /*
02: *******************************************************************************
03: * Copyright (C) 1996-2006, International Business Machines Corporation and *
04: * others. All Rights Reserved. *
05: *******************************************************************************
06: */
07:
08: package com.ibm.icu.util;
09:
10: import java.util.Date;
11:
12: /**
13: * DateRule is an interface for calculating the date of an event.
14: * It supports both recurring events and those which occur only once.
15: * DateRule is useful for storing information about holidays,
16: * Daylight Savings Time rules, and other events such as meetings.
17: *
18: * @see SimpleDateRule
19: * @draft ICU 2.8 (retainAll)
20: * @provisional This API might change or be removed in a future release.
21: */
22: public interface DateRule {
23: /**
24: * Return the first occurrance of the event represented by this rule
25: * that is on or after the given start date.
26: *
27: * @param start Only occurrances on or after this date are returned.
28: *
29: * @return The date on which this event occurs, or null if it
30: * does not occur on or after the start date.
31: *
32: * @see #firstBetween
33: * @draft ICU 2.8
34: * @provisional This API might change or be removed in a future release.
35: */
36: abstract public Date firstAfter(Date start);
37:
38: /**
39: * Return the first occurrance of the event represented by this rule
40: * that is on or after the given start date and before the given
41: * end date.
42: *
43: * @param start Only occurrances on or after this date are returned.
44: * @param end Only occurrances before this date are returned.
45: *
46: * @return The date on which this event occurs, or null if it
47: * does not occur between the start and end dates.
48: *
49: * @see #firstAfter
50: * @draft ICU 2.8
51: * @provisional This API might change or be removed in a future release.
52: */
53: abstract public Date firstBetween(Date start, Date end);
54:
55: /**
56: * Checks whether this event occurs on the given date. This does
57: * <em>not</em> take time of day into account; instead it checks
58: * whether this event and the given date are on the same day.
59: * This is useful for applications such as determining whether a given
60: * day is a holiday.
61: *
62: * @param date The date to check.
63: * @return true if this event occurs on the given date.
64: * @draft ICU 2.8
65: * @provisional This API might change or be removed in a future release.
66: */
67: abstract public boolean isOn(Date date);
68:
69: /**
70: * Check whether this event occurs at least once between the two
71: * dates given.
72: * @draft ICU 2.8
73: * @provisional This API might change or be removed in a future release.
74: */
75: abstract public boolean isBetween(Date start, Date end);
76: };
|