You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »


On this page

Each calendar configuration is highly flexible but the underlying specification must follow a dedicated syntax.


JWT calendars elements and syntax

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.

Time specifiers

A time specifier is composed of a time definition and a block in the following format: 

<time_definition> { <block_content> }

Time definition

Defines a part of the time continuum (a set of real numbers).

Block

A block is written between braces {} and defines a scope where the lower level time specifiers can be written.

Levels

Time specifiers are ordered in five hierarchical levels:

  1. Global
  2. Year
  3. Month
  4. Week
  5. Day
A time specifier of a particular level is always explicitly or implicitly contained in a time specifier of the immediately higher level. When the higher level time specifier is not configured, then it is implicitly contained in an unrestricted higher level time specifier.

Priority

Time specifiers each have a dedicated priority. In case that two or more time specifiers overlap in the same level, the one with the highest priority is applied.

Time specifiers with the same priority in the same level are not allowed to overlap, i.e., the intersection of their time definitions must be empty.

Category

Time specifiers can be classified into two categories:

  1. Absolute: Defines the unique and specific parts of the time continuum. This category of time specifiers represents the ones in the global level.
  2. Relative: Define parts of the time in the context of other time specifiers, i.e., the actual part of the time continuum defined depends on the time specifier where it is contained. This category of time specifiers is contained in the all levels besides the global.

Comments

JWT calendars supports single-line comments. Comments begin with a #. e.g.:

#Summer Calendar


Time specifier overview

The following table represents all the available time specifiers ordered by level and priority:


High priorityMedium priorityLow priority
Level


Global

Date list

2018/03/25, 2018/AUG/18
2017/01/01, 2017/05/01, 2017/12/25-2017/12/31


Can contain intervals.

Date

2018/JUN/15-2018/SEP/15
2018/01/01-2018/01/07, 2018/04/10-2018/04/20

Year list

2000, 2005, 2010
2000-2011
2010-2015, 2018, 2020-2025

Can contain intervals.

Year


Month-Day List

JAN/1, MAY/1, JUL/4, DEC/25

Month-Day

MAR/20-MAR/25
AUG/1-AUG/15, NOV/5-NOV-15

Month List

JAN, MAR, MAY, DEC
JAN-JUN, SEP-DEC
JAN-MAR, MAY, JUL, OCT-DEC

Can contain intervals.

DayWhole Day

00:00-00:00;
Time

8:00-15:00;
8:00-15:00, 16:00-19:00;
21:00-3:00;

Empty

;

Used for defining holidays.

Month

Day of Month List

1, 15, 30
1-5, 15, 25-3
1, 15-31
25-5

Can contain intervals.



Week

Day of Week List

MON-THU
MON-WED, FRI
MON, WED, FRI
SAT-MON, WED

Can contain intervals.



Example specifications

Get some inspiration by looking at the example specifications below.

Examples

CalendarDescription
08:00-15:00, 16:00-20:00;

Any date-time with time part between 08:00 and 15:00, or 16:00 and 20:00.

By convention 15:00 and 20:00 time instants are out of the calendar.

MON-FRI{08:00-15:00, 16:00-20:00;}
Mondays to Fridays from 08:00 to 15:00 and from 16:00 to 20:00.
MON-THU{08:00-15:00, 16:00-20:00;} FRI{08:00-15:00;}

Mondays to Thursdays from 08:00 to 15:00 and from 16:00 to 20:00.

Fridays from 08:00 to 15:00.

# Winter Calendar
MON - THU {
   08:00 - 15:00,
   16:00 - 20:00;
}
 
FRI {
    08:00 - 15:00;
}
 
# Summer Calendar
JUN/15 - SEP/15 {
    MON - FRI {
        08:00 - 14:30;
    }
}

From June 15th to September 15th , Mondays to Fridays from 8:00 to 14:30.

For the rest of the year, Mondays to Thursdays from 08:00 to 15:00 and from 16:00 to 20:00. Fridays from 08:00 to 15:00.

# Winter Calendar
MON - THU {
   08:00 - 15:00,
   16:00 - 20:00;
}
 
FRI {
    08:00 - 15:00;
}
 
# Summer Calendar
JUN/15 - SEP/15 {
    MON - FRI {
        08:00 - 14:30;
    }
}
 
# Annual Holidays
JAN/1, MAY/1, NOV/1, DEC/25 {;}
 
# 2017 Holidays
2017/JAN/12, 2017/APR/13, 2017/APR/14, 2017/NOV/23 {;}

From June 15th to September 15th, Mondays to Fridays from 8:00 to 14:30.

For the rest of the year, Mondays to Thursdays from 08:00 to 15:00 and from 16:00 to 20:00. Fridays from 08:00 to 15:00.

We added also a specification for annual holidays, i.e., holidays that have the same day every year, and for particular year holidays (2017 in the example).



# Calendar from 1st December 2017 on
 
# Winter Calendar
MON-THU {
   08:30 - 15:30,
   16:00 - 19:30;
}
 
FRI {
   08:00 - 15:00;
}
 
# Summer Calendar
JUN/15 - SEP/15 {
   MON - FRI {
      08:00 - 14:30;
   }
}
 
# Annual Holidays
JAN/1, MAY/1, JUL/4, NOV/1, DEC/25 {;}
 
# 2018 Holidays
2018/03/27 - 2018/03/30, 2018/10/22 {;}
 
# Calendar up to 30th November 2017
2000/01/01 - 2017/11/30 {
 
   # Winter Calendar
   MON-THU {
      08:00 - 15:00,
      16:00 - 20:00;
   }
 
   FRI {
      08:00 - 15:00;
   }
 
   # Summer Calendar
   JUN/15 - SEP/15 {
      MON - FRI {
         08:00 - 14:30;
      }
   }
 
   # Annual Holidays
   JAN/1, MAY/1, NOV/1, DEC/25 {;}
}
 
# 2017 Holidays
2017/JAN/12, 2017/APR/13, 2017/APR/14, 2017/NOV/23 {;}
In this example we show how to introduce some modifications in the previous calendar that will be applied since  December 1st, 2017 on, keeping the old calendar valid only up to 30th November 2017.

If you still have questions, feel free to refer to our support team.