On this page |
A calendar is a system on which JWT will be able to do time calculations. Each calendars should be composed of at least one time specifier. Each calendar configuration is highly flexible but the underlying specification must follow a dedicated syntax. |
A simple time specifier is composed of a time definition or frame and a scope definition in the following format:
<frame> { <scope>; } #e.g. JAN-MAR {08:00 - 12:00;} |
Defines the time frame to be included in the specification (e.g. JAN-MAR).
The scope definition further refines a time frame. Multiple time definitions and scopes can be specified and nested based on their hierarchy level.
Each scope needs to be ended with a ";".
Time specifiers are ordered in five hierarchical levels:
A time specifier of a particular level is always explicitly or implicitly contained in a time specifier of the immediately higher level (e.g. a day is contained in a month). When the higher level time specifier is not configured (e.g. no month defined) , then it is implicitly contained in an unrestricted higher level time specifier (e.g. year). |
|
Time specifiers can be classified into two categories:
Defines the unique and specific parts of the time continuum. This category of time specifiers represents the ones in the global level.
2020/03/25 #this is a unique and specific date |
Relative
Define parts of the time in the context of other time specifiers. The definition depends on the time specifier where it is contained. This category of time specifiers is contained in the all levels besides the global.
FRI { 08:00 - 15:00; #the time specifier depends on the "container". In this a day of the week, which is Friday. } |
JWT calendars supports single-line comments. Comments begin with a #. e.g.:
#Summer Calendar |
The following table represents all the available time specifiers ordered by level and priority.
|
Get some inspiration by looking at the example specifications below.
|
<schedule> ::= <global_level_specifier> + <global_level_specifier> ::= <date_interval_list> <year_level_specifier> ::= <month_day_list> <month_level_specifier> ::= <day_of_month_list> <week_level_specifier> ::= <day_of_week_list> <day_level_specifier> ::= <time_interval_list> <time_interval_list> ::= <time_interval> ( <time_interval> ::= <time_literal> <time_literal> examples: <date_interval_list> ::= <date_interval> ( <date_list> ::= (<date_literal> | <date_interval>) ( <date_interval> ::= <date_literal> <date_literal> examples: <year_list> ::= (<year> | <year_interval>) ( <year_interval> ::= <year> <year> examples: <month_day_list> ::= <month_day> ( <month_day_interval_list> ::= <month_day_interval> ( <month_day_interval> ::= <month_day> <month_day> ::= <month> <month_list> ::= (<month> | <month_interval>) ( <month> ::= <day_of_month_list> ::= (<day_of_month> | <day_of_month_interval>) ( <day_of_month_interval> ::= <day_of_month> <day_of_week_list> ::= (<day_of_week> | <day_of_week_interval>) ( <day_of_week> ::= |
|