A
All
The scheduler is not destroyed, and can be re-started at any time.
The scheduler cannot be re-started.
The scheduler cannot be re-started.
If the given Trigger does not reference any
The
If the
If any
If any of the
If any of the
When
If any
Listeners in the 'global' list receive notification of execution events
for ALL
Listeners in the 'global' list receive notification of execution events
for ALL
This method is not cluster aware. That is, it will only return Jobs currently executing in this Scheduler instance, not across the entire cluster.
Note that the list returned is an 'instantaneous' snap-shot, and that as soon as it's returned, the true list of executing jobs may be different.
If a group was paused, then the
If a group was resumed, then the
If a group was paused, then the
If a group was resumed, then the parameter will be null. If all jobs were paused, then both parameters will be null.
The
This method will not be invoked if the execution of the Job was vetoed
by a
Set the instanceId.
This interface is very similar to the
Unless a database driver has some extremely-DB-specific
requirements, any IDriverDelegate implementation classes should extend the
Get the names of all of the triggers associated with the given job.
Get all of the listeners for a given job.
If instanceId is not null, then only the record for the identified instance will be returned.
If instanceId is not null, then only the record for the identified instance will be returned.
Determine if the specified error code is in the
Determine if the specified error code is in the
If removal of the
If removal of the
If there are no jobs in the given group name, the result should be a
zero-length array (not
If there are no triggers in the given group name, the result should be a
zero-length array (not
If there are no known group names, the result should be a zero-length
array (not
If there are no known group names, the result should be a zero-length
array (not
If there are no Calendars in the given group name, the result should be
a zero-length array (not
The JobStore should "remember" that the group is paused, and impose the pause on any new jobs that are added to the group while the group is paused.
If the
If any
If any of the
If any of the
When
If any
Insert or update a job.
If removal of the
If removal of the
If any
When
If any
Create a
Create a
Create a
Create a
Note that this Calendar is only has full-day precision.
Note that this Calendar is only has full-day precision.
It is important to remember that the cron expression here describes a set of
times to be excluded from firing. Whereas the cron expression in
CronTrigger describes a set of times that can
be included for firing. Thus, if a
Note when using
Note that this Calendar is only has full-day precision.
Note that this Calendar is only has full-day precision.
Note that this Calendar is only has full-day precision.
Note that this Calendar is only has full-day precision.
Note that this Calendar is only has full-day precision.
Note that this Calendar is only has full-day precision.
To create a scheduler that does not write anything to the database (is not
persistent), you can call
DirectSchedulerFactory.Instance.CreateVolatileScheduler(10); // 10 threads // don't forget to start the scheduler: DirectSchedulerFactory.Instance.GetScheduler().Start();
Several create methods are provided for convenience. All create methods eventually end up calling the create method with all the parameters:
public void createScheduler(String schedulerName, string schedulerInstanceId, ThreadPool threadPool, JobStore jobStore, string rmiRegistryHost, int rmiRegistryPort)
Here is an example of using this method:
// create the thread pool SimpleThreadPool threadPool = new SimpleThreadPool(maxThreads, Thread.NORM_PRIORITY); threadPool.Initialize(); // create the job store JobStore jobStore = new RAMJobStore(); jobStore.Initialize(); DirectSchedulerFactory.Instance.CreateScheduler("My Quartz Scheduler", "My Instance", threadPool, jobStore, "localhost", 1099); // don't forget to start the scheduler: DirectSchedulerFactory.Instance.GetScheduler("My Quartz Scheduler", "My Instance").start();
you must call createRemoteScheduler or createScheduler methods before calling getScheduler()
Returns a handle to all known Schedulers (made by any StdSchedulerFactory instance.).
This method is not cluster aware. That is, it will only return Jobs currently executing in this Scheduler instance, not across the entire cluster.
Note that the list returned is an 'instantaneous' snap-shot, and that as
soon as it's returned, the true list of executing jobs may be different.
Also please read the doc associated with
When
The scheduler is not destroyed, and can be re-started at any time.
If more than one instance of the identified job is currently executing,
the
If you wish to interrupt a specific instance of a job (when more than
one is executing) you can do so by calling
This method is not cluster aware. That is, it will only interrupt instances of the identified InterruptableJob currently executing in this Scheduler instance, not across the entire cluster.
Note that the data returned is an 'instantaneous' snap-shot, and that as soon as it's returned, the meta data values may be different.
JobFactories may be of use to those wishing to have their application
produce
This implementation does not re-use any objects, it simply makes a new
JobRunShell each time
Note that the data returned is an 'instantaneous' snap-shot, and that as soon as it's returned, the meta data values may be different.
If more than one instance of the identified job is currently executing,
the
If you wish to interrupt a specific instance of a job (when more than
one is executing) you can do so by calling
This method is not cluster aware. That is, it will only interrupt instances of the identified InterruptableJob currently executing in this Scheduler instance, not across the entire cluster.
By default a properties are loaded from App.config's quartz section. If that fails, then the "quartz.properties" file located (as a embedded resource) in Quartz.dll is loaded. If you wish to use a file other than these defaults, you must define the system property 'quartz.properties' to point to the file you want.
See the sample properties that are distributed with Quartz for information about the various settings available within the file.
Alternativly, you can explicitly Initialize the factory by calling one of
the
Instances of the specified
By default a properties file named "quartz.properties" is loaded from the 'current working directory'. If that fails, then the "quartz.properties" file located (as a resource) in the org/quartz package is loaded. If you wish to use a file other than these defaults, you must define the system property 'quartz.properties' to point to the file you want.
Returns a handle to the Scheduler with the given name, if it exists (if it has already been instantiated).
Returns a handle to all known Schedulers (made by any StdSchedulerFactory instance.).
The implementation may wish to set a result object on the
JobExecutionContext before this method exits. The result itself
is meaningless to Quartz, but may be informative to
Defaults to
Defaults to
The implementation may wish to set a result object on the
JobExecutionContext before this method exits. The result itself
is meaningless to Quartz, but may be informative to
The broadcasting behavior of this listener to delegate listeners may be more convenient than registering all of the listeners directly with the Trigger, and provides the flexibility of easily changing which listeners get notified.
You may also register a number of Regular Expression patterns to match the events against. If one or more patterns are registered, the broadcast will only take place if the event applies to a job who's name/group matches one or more of the patterns.
The broadcasting behavior of this listener to delegate listeners may be more convenient than registering all of the listeners directly with the Trigger, and provides the flexibility of easily changing which listeners get notified.
You may also register a number of Regular Expression patterns to match the events against. If one or more patterns are registered, the broadcast will only take place if the event applies to a trigger who's name/group matches one or more of the patterns.
It is called before the
It is called after the
Consideration should be given to how much time is spent in this method, as it will affect all triggers that are misfiring. If you have lots of triggers misfiring at once, it could be an issue it this method does a lot.
Generally an instance of this listener would be registered as a global job listener, rather than being registered directly to a given job.
If for some reason there is a failure creating the trigger for the follow-up job (which would generally only be caused by a rare serious failure in the system, or the non-existence of the follow-up job), an error messsage is logged, but no other action is taken. If you need more rigorous handling of the error, consider scheduling the triggering of the flow-up job within your job itself.
The methods in this class are empty so you only need to override the
subset for the
You are required to implement
This method will not be invoked if the execution of the Job was vetoed
by a
The methods in this class are empty so you only need to override the
subset for the
You are required to implement
The logged message is customizable by setting one of the following message
properties to a string that conforms to the syntax of
JobToBeFiredMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Job's Name. |
1 | String | The Job's Group. |
2 | Date | The current time. |
3 | String | The Trigger's name. |
4 | String | The Triggers's group. |
5 | Date | The scheduled fire time. |
6 | Date | The next scheduled fire time. |
7 | Integer | The re-fire count from the JobExecutionContext. |
JobSuccessMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Job's Name. |
1 | String | The Job's Group. |
2 | Date | The current time. |
3 | String | The Trigger's name. |
4 | String | The Triggers's group. |
5 | Date | The scheduled fire time. |
6 | Date | The next scheduled fire time. |
7 | Integer | The re-fire count from the JobExecutionContext. |
8 | Object | The string value (toString() having been called) of the result (if any) that the Job set on the JobExecutionContext, with on it. "NULL" if no result was set. |
JobFailedMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Job's Name. |
1 | String | The Job's Group. |
2 | Date | The current time. |
3 | String | The Trigger's name. |
4 | String | The Triggers's group. |
5 | Date | The scheduled fire time. |
6 | Date | The next scheduled fire time. |
7 | Integer | The re-fire count from the JobExecutionContext. |
8 | String | The message from the thrown JobExecution Exception. |
JobWasVetoedMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Job's Name. |
1 | String | The Job's Group. |
2 | Date | The current time. |
3 | String | The Trigger's name. |
4 | String | The Triggers's group. |
5 | Date | The scheduled fire time. |
6 | Date | The next scheduled fire time. |
7 | Integer | The re-fire count from the JobExecutionContext. |
If you use
If you need direct access your plugin, you can have it explicitly put a
reference to itself in the
If you need direct access your plugin, you can have it explicitly put a
reference to itself in the
The logged message is customizable by setting one of the following message
properties to a string that conforms to the syntax of
TriggerFiredMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Trigger's Name. |
1 | String | The Trigger's Group. |
2 | Date | The scheduled fire time. |
3 | Date | The next scheduled fire time. |
4 | Date | The actual fire time. |
5 | String | The Job's name. |
6 | String | The Job's group. |
7 | Integer | The re-fire count from the JobExecutionContext. |
TriggerMisfiredMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Trigger's Name. |
1 | String | The Trigger's Group. |
2 | Date | The scheduled fire time. |
3 | Date | The next scheduled fire time. |
4 | Date | The actual fire time. (the time the misfire was detected/handled) |
5 | String | The Job's name. |
6 | String | The Job's group. |
TriggerCompleteMessage - available message data are:
Element | Data Type | Description |
---|---|---|
0 | String | The Trigger's Name. |
1 | String | The Trigger's Group. |
2 | Date | The scheduled fire time. |
3 | Date | The next scheduled fire time. |
4 | Date | The job completion time. |
5 | String | The Job's name. |
6 | String | The Job's group. |
7 | Integer | The re-fire count from the JobExecutionContext. |
8 | Integer | The trigger's resulting instruction code. |
9 | String | A human-readable translation of the trigger's resulting instruction code. |
It is called before the
Consideration should be given to how much time is spent in this method, as it will affect all triggers that are misfiring. If you have lots of triggers misfiring at once, it could be an issue it this method does a lot.
It is called after the
The default value is
This class is useful when you know that your scheduler instance will be the only one running on a particular machine. Each time the scheduler is restarted, it will get the same instance id as long as the machine is not renamed.
This interface may be of use to those wishing to have specific control over
the mechanism by which the
It should be extremely rare for this method to throw an exception -
basically only the the case where there is no way at all to instantiate
and prepare the Job for execution. When the exception is thrown, the
Scheduler will move all triggers associated with the Job into the
It should be extremely rare for this method to throw an exception -
basically only the the case where there is no way at all to instantiate
and prepare the Job for execution. When the exception is thrown, the
Scheduler will move all triggers associated with the Job into the
As you should know, the ramification of this is that access is extrememly
fast, but the data is completely volatile - therefore this
If removal of the
If there are no ICalendars in the given group name, the result should be
a zero-length array (not
If there are no matches, a zero-length array should be returned.
The JobStore should "remember" that the group is paused, and impose the pause on any new triggers that are added to the group while the group is paused.
The JobStore should "remember" that the group is paused, and impose the pause on any new jobs that are added to the group while the group is paused.
If any
If any of the
If any of the
When
If any
The pool has a fixed number of
{@link org.quartz.spi.ThreadPool}
interface.
Return the string representation of the key. The format will be: <group>.<name>.
Get the group portion of the key.
All keys must be
The xml document must conform to the format defined in "job_scheduling_data.xsd"
After creating an instance of this class, you should call one of the
The same instance can be used again and again, with the list of defined Jobs
being cleared each time you call a
See http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime
The key is the job name and the value is a
Cron expressions are comprised of 6 required fields and one optional field separated by white space. The fields respectively are described as follows:
Field Name | Allowed Values | Allowed Special Characters | ||
---|---|---|---|---|
Seconds | 0-59 | , - /// / | ||
Minutes | 0-59 | , - /// / | ||
Hours | 0-23 | , - /// / | ||
Day-of-month | 1-31 | , - /// ? / L W C | ||
Month | 1-12 or JAN-DEC | , - /// / | ||
Day-of-Week | 1-7 or SUN-SAT | , - /// ? / L # | ||
Year (Optional) | empty, 1970-2099 | , - /// / |
The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fields, but not the other.
The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". Specifying '*' before the '/' is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The "/" character simply helps you turn on every "nth" value in the given set. Thus "7/6" in the month field only turns on month "7", it does NOT mean every 6th month, please note that subtlety.
The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.
The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.
The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".
The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month. If the '#' character is used, there can only be one expression in the day-of-week field ("3#1,6#3" is not valid, since there are two expressions).
The legal characters and the names of months and days of the week are not case sensitive.
NOTES:
For those unfamiliar with "cron", this means being able to create a firing schedule such as: "At 8:00am every Monday through Friday" or "At 1:30am every last Friday of the month".
The format of a "Cron-Expression" string is documented on the
Here are some full examples:
Expression | Meaning | |
---|---|---|
"0 0 12 * * ?"" /> | Fire at 12pm (noon) every day" /> | |
"0 15 10 ? * *"" /> | Fire at 10:15am every day" /> | |
"0 15 10 * * ?"" /> | Fire at 10:15am every day" /> | |
"0 15 10 * * ? *"" /> | Fire at 10:15am every day" /> | |
"0 15 10 * * ? 2005"" /> | Fire at 10:15am every day during the year 2005" /> | |
"0 * 14 * * ?"" /> | Fire every minute starting at 2pm and ending at 2:59pm, every day" /> | |
"0 0/5 14 * * ?"" /> | Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day" /> | |
"0 0/5 14,18 * * ?"" /> | Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day" /> | |
"0 0-5 14 * * ?"" /> | Fire every minute starting at 2pm and ending at 2:05pm, every day" /> | |
"0 10,44 14 ? 3 WED"" /> | Fire at 2:10pm and at 2:44pm every Wednesday in the month of March." /> | |
"0 15 10 ? * MON-FRI"" /> | Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday" /> | |
"0 15 10 15 * ?"" /> | Fire at 10:15am on the 15th day of every month" /> | |
"0 15 10 L * ?"" /> | Fire at 10:15am on the last day of every month" /> | |
"0 15 10 ? * 6L"" /> | Fire at 10:15am on the last Friday of every month" /> | |
"0 15 10 ? * 6L"" /> | Fire at 10:15am on the last Friday of every month" /> | |
"0 15 10 ? * 6L 2002-2005"" /> | Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005" /> | |
"0 15 10 ? * 6#3"" /> | Fire at 10:15am on the third Friday of every month" /> |
Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!
NOTES:
Triggers can 'send' parameters/data to
Called when the
Called by the scheduler at the time a
After this method has been called,
If the returned value is
To be implemented by the concrete classes that extend this class.
The implementation should update the
The implementation should update the
Changes made to this map during job execution are not re-persisted, and in fact typically result in an illegal state.
If not explicitly set, the default value is
Note that the return time *may* be in the past.
If not explicitly set, the default value is
Usable by
If null, the start-time will also be set to the current time, the time zone will be set the the system's default.
This method should not be invoked by client code.
This method should not be invoked by client code.
If the returned value is
To be implemented by the concrete classes that extend this class.
The implementation should update the
Determines whether the date and (optionally) time of the given Calendar instance falls on a scheduled fire-time of this trigger.
Equivalent to calling
Note that the value returned is NOT validated against the related ICalendar (if any).
After this method has been called,
Note that the return time *may* be in the past.
The means of actually interrupting the Job must be implemented within the
If the Job performs some form of blocking I/O or similar functions, you may
want to consider having the
The
Note that the
If not explicitly set, the default value is
If not explicitly set, the default value is
If not explicitly set, the default value is
The
NOTE: this data is volatile - it is lost after the job execution completes, and all TriggerListeners and JobListeners have been notified.
The
NOTE: Do not expect value 'set' into this JobDataMap to somehow be
set back onto a
Attempts to change the contents of this map typically result in an illegal state.
Note: The Job instance is not available through remote scheduler interfaces.
The result itself is meaningless to Quartz, but may be informative
to
The result itself is meaningless to Quartz, but may be informative
to
NOTE: This instruction should typically only be used for
'one-shot' (non-repeating) Triggers. If it is used on a trigger with a
repeat count > 0 then it is equivalent to the instruction
NOTE: Use of this instruction causes the trigger to 'forget' the start-time and repeat-count that it was originally setup with (this is only an issue if you for some reason wanted to be able to tell what the original values were at some later time).
NOTE: Use of this instruction causes the trigger to 'forget' the start-time and repeat-count that it was originally setup with. Instead, the repeat count on the trigger will be changed to whatever the remaining repeat count is (this is only an issue if you for some reason wanted to be able to tell what the original values were at some later time).
NOTE: This instruction could cause the
NOTE/WARNING: This instruction could cause the
All
Take, for example, the following calendar:
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 W 1 2 3 4 5 W 1 2 W
W H 5 6 7 8 W W 8 9 10 11 12 W W H 6 7 8 9 W
W 11 12 13 14 15 W W 15 16 17 18 19 W W 12 13 14 15 16 W
W 18 19 20 21 22 W W 22 23 24 25 26 W W 19 20 21 22 23 W
W 25 26 27 28 29 W W 29 30 31 W 26 27 28 29 30
W
Where W's represent weekend days, and H's represent holidays, all of which
are excluded on a calendar associated with an
Note that
Note that
Because of the conceptual design of
The returned value is not guaranteed to be valid until after the trigger has been added to the scheduler.
Because of the conceptual design of
Therefore, for triggers with intervalType =
After this method has been called,
If the returned value is
If the misfire instruction is set to MISFIRE_INSTRUCTION_SMART_POLICY,
then the instruction will be interpreted as
Because of the conceptual design of
Because of the conceptual design of
In most cases, the default value of this setting (12) is sufficient (it is highly unlikely, for example, that you will need to look at more than 12 months of dates to ensure that your trigger will never fire again). However, this setting is included to allow for the rare exceptions where this might not be true.
For example, if your trigger is associated with a calendar that excludes
a great many dates in the next 12 months, and hardly any following that,
it is possible (if
Create a
Create a
The message will read:
"Unable to store Job with name: '__' and
group: '__', because one already exists with this identification."
Create a
The message will read:
"Unable to store Trigger with name: '__' and
group: '__', because one already exists with this identification."
The format of the string looks something like this:
Quartz Scheduler 'SchedulerName' with instanceId 'SchedulerInstanceId' Scheduler class: 'Quartz.Impl.StdScheduler' - running locally. Running since: '11:33am on Jul 19, 2002' Not currently paused. Number of Triggers fired: '123' Using thread pool 'Quartz.Simpl.SimpleThreadPool' - with '8' threads Using job-store 'Quartz.Impl.JobStore' - which supports persistence.
After this method has been called,
Note that the return time may be in the past.
A
When the trigger is in the error state, the scheduler will make no attempts to fire it.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
If the day of the month specified does not occur in a given month, a firing will not occur that month. (i.e. if dayOfMonth is specified as 31, no firing will occur in the months of the year with fewer than 31 days).
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
If the day of the month specified does not occur in a given month, a firing will not occur that month. (i.e. if dayOfMonth is specified as 31, no firing will occur in the months of the year with fewer than 31 days).
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its name, group, or end-time set. The Start time defaults to 'now'.
The generated trigger will not have its group, or end-time set. The Start time defaults to 'now'.
For example an input date with a time of 08:13:54 would result in a date with the time of 09:00:00. If the date's time is in the 23rd hour, the date's 'day' will be promoted, and the time will be set to 00:00:00.
For example an input date with a time of 08:13:54 would result in a date with the time of 08:00:00.
For example an input date with a time of 08:13:54 would result in a date with the time of 08:14:00. If the date's time is in the 59th minute, then the hour (and possibly the day) will be promoted.
For example an input date with a time of 08:13:54 would result in a date with the time of 08:13:00.
For example an input date with a time of 08:13:54.341 would result in a date with the time of 08:13:00.000.
For example an input date with a time of 08:13:54, and an input minute-base of 5 would result in a date with the time of 08:15:00. The same input date with an input minute-base of 10 would result in a date with the time of 08:20:00. But a date with the time 08:53:31 and an input minute-base of 45 would result in 09:00:00, because the even-hour is the next 'base' for 45-minute intervals.
More examples:
Input Time | Minute-Base | Result Time |
---|---|---|
11:16:41 | 20 | 11:20:00 |
11:36:41 | 20 | 11:40:00 |
11:46:41 | 20 | 12:00:00 |
11:26:41 | 30 | 11:30:00 |
11:36:41 | 30 | 12:00:00 |
11:16:41 | 17 | 11:17:00 |
11:17:41 | 17 | 11:34:00 |
11:52:41 | 17 | 12:00:00 |
11:52:41 | 5 | 11:55:00 |
11:57:41 | 5 | 12:00:00 |
11:17:41 | 0 | 12:00:00 |
11:17:41 | 1 | 11:08:00 |
The rules for calculating the second are the same as those for
calculating the minute in the method
NOTE: if this is a trigger that has previously fired within the given date range, then firings which have already occured will not be listed in the output List.