module Printer:Pretty printing and parsing from string. In the following, an "event" is either a date or a time or a calendar.sig..end
This module implements different printers: one for each kind of events.
The three printers have the same signature:
they mainly implement a fprint : string -> formatter -> t -> unit function
and a from_fstring : string -> string -> t function.
The first one prints an event according to a format string
(see below for a description of such a format).
The second one converts a string to an event according to a format string.
A format string follows the unix utility 'date' (with few modifications).
It is a string which contains two types of objects: plain characters and
conversion specifiers. Those specifiers are introduced by
a % character and their meanings are:
%%: a literal %%a: short day name (by using a short version of day_name)%A: day name (by using day_name)%b: short month name (by using a short version of month_name)%B: month name (by using month_name)%c: shortcut for %a %b %d %H:%M:%S %Y%C: century: as %Y without the two last digits (since version 2.01)%d: day of month (01..31)%D: shortcut for %m/%d/%y%e: same as %_d%F: shortcut for %Y-%m-%d: ISO-8601 notation (since version 2.01)%h: same as %b%H: hour (00..23)%I: hour (01..12)%i: same as %F; deprecated since 2.01%j: day of year (001..366)%k: same as %_H%l: same as %_I%m: month (01..12)%M: minute (00..59)%n: a newline (same as \n)%p: AM or PM%P: am or pm (same as %p in lowercase) (since version 2.01)%r: shortcut for %I:%M:%S %p%R: shortcut for %H:%M (since version 2.01)%s: number of seconds since 1970/1/1 (since version 2.01)%S: second (00..60)%t: a horizontal tab (same as \t)%T: shortcut for %H:%M:%S%V: week number of year (01..53)%w: day of week (1..7)%W: same as %V%y: last two digits of year (00..99)%Y: year (four digits)%z: time zone in the form +hhmm (e.g. -0400) (since version 2.01)%:z: time zone in the form +hh:mm (e.g. -04:00) (since version 2.01)%::z: time zone in the form +hh:mm:ss (e.g. -04:00:00) (since version 2.01)%:::z: time zone in the form +hh (e.g. -04) (since version 2.01)`%' and a numeric directive are recognized:'-' (hyphen): do not pad the field'_' (underscore): pad the field with spaces'0' (zero): pad the field with zeroes (default) (since version 2.01)'^': use uppercase if possible (since version 2.01)
Padding is only available for printers, not for parsers.%c is Thu Sep 18 14:10:51 2003.the date is %B, the %-dth is
the date is January, the 6th is matched by ;%D is 01/06/03
You can manage the string representations of days and months.
By default, the English names are used but you can change their by
setting the references day_name and month_name.
val day_name : (Date.day -> string) Pervasives.refval name_of_day : Date.day -> stringname_of_day d is equivalent to !day_name d.
Used by the specifier %A.val short_name_of_day : Date.day -> stringshort_name_of_day d returns the 3 first characters of name_of_day d.
Used by the specifier %a.val month_name : (Date.month -> string) Pervasives.refval name_of_month : Date.month -> stringname_of_month m is equivalent to !day_month m.
Used by the specifier %B.val short_name_of_month : Date.month -> stringshort_name_of_month d returns the 3 first characters of
name_of_month d.
Used by the specifier %b.val set_word_regexp : Str.regexp -> unitfrom_fstring. Default is [a-zA-Z]*.
Printers also contain parsers which allow to build events from strings.
module type S =sig..end
module Date:Swith type t = Date.t
module DatePrinter:Swith type t = Date.t
module Time:Swith type t = Time.t
module TimePrinter:Swith type t = Time.t
module Ftime:Swith type t = Ftime.t
module Precise_Calendar:Swith type t = Calendar.Precise.t
module Calendar:Swith type t = Calendar.t
module CalendarPrinter:Swith type t = Calendar.t
module Precise_Fcalendar:Swith type t = Fcalendar.Precise.t
module Fcalendar:Swith type t = Fcalendar.t