module Netdate:Support for common date/time parsing and formatting. Many routines refer to the epoch, which for Unix is 00:00:00 UTC, January 1, 1970.sig
..end
type
t = {
|
year : |
(* | complete year | *) |
|
month : |
(* | 1..12 | *) |
|
day : |
(* | 1..31 | *) |
|
hour : |
|||
|
minute : |
|||
|
second : |
|||
|
zone : |
(* | in minutes; 60 = UTC+0100 | *) |
|
week_day : |
(* | 0 = sunday; -1 if not given | *) |
val localzone : int
val create : ?zone:int -> float -> t
val parse : ?zone:int -> string -> t
The following particles are recognized (by example):
1971/06/22
06/22/1971
1971-06-22
22-June-1971
22.06.1971
June 22, 1971
22 June 1971
06/22/71
22.06.71
71-06-22
22-June-71
June
, Jun
)Monday
, Mon
)14:55
14:55:28
14:55:28.6754
(the fractional part is not returned)T
UTC
, CET
, or Z
+01:00
, -01:00
, only following time+0100
, -0100
, only following time1900+x
. 2-digit years < 70 are interpreted as 2000+x
.
Support for 2-digit years will be removed in a future version
of Ocamlnet. (Support for 3-digit years is already removed in
Ocamlnet 3.0.)
Only English names of months and weekdays are recognized.
A date must be given. Time, time zones, and weekdays are optional.
A missing time is reported as "00:00:00". A missing weekday is
reported by setting week_day=(-1)
. A missing time zone is
reported by setting zone
to the passed default.
It is not checked whether the parsed numbers make sense (e.g. whether months are between 1 and 12).
Date/time strings as defined in RFC 3339 are supported since
Ocamlnet 3.0.
val since_epoch : t -> float
val parse_epoch : ?zone:int -> string -> float
val format_to : Netchannels.out_obj_channel -> fmt:string -> t -> unit
The format string consists of zero or more conversion specifications and ordinary characters. All ordinary characters are output directly to the channel. A conversion specification consists of the '%' character and one other character.
The conversion specifications are:
%A
: full weekday name.%a
: abbreviated weekday name.%B
: full month name.%b
: abbreviated month name.%C
: (year / 100) as an integer; single digits are preceded by a zero.%c
: equivalent to "%a %b %e %T %Y"
.%D
: equivalent to "%m/%d/%y"
.%d
: day of the month as an integer (01-31); single digits are
preceded by a zero.%e
: day of the month as an integer (1-31).%H
: hour (24-hour clock) as an integer (00-23).%h
: the same as %b.%I
: hour (12-hour clock) as an integer (01-12).%j
: day of the year as an integer (001-366).%k
: hour (24-hour clock) as an integer (0-23);
single digits are preceded by a blank.%l
: hour (12-hour clock) as an integer (1-12);
single digits are preceded by a blank.%M
: minute as an integer (00-59).%m
: month as an integer (01-12).%n
: a newline.%p
: either "AM" or "PM" as appropriate.%P
: either "am" or "pm" as appropriate.%R
: equivalent to "%H:%M"
.%r
: equivalent to "%I:%M:%S %p"
.%S
: second as an integer (00-60).%T
: equivalent to "%H:%M:%S"
.%t
: a tab.%U
: week number of the year (Sunday as the first day
of the week) as an integer (00-53).%u
weekday (Monday as the first day of the week) as
an integer (1-7).%w
: weekday (Sunday as the first day of the week) as
an integer (0-6).%X
: representation of the time.%x
: representation of the date.%Y
: year with century as an integer.%y
: year without century as an integer (00-99).%z
: time zone offset from UTC; a leading plus sign
stands for east of UTC, a minus sign for west of UTC, hours and
minutes follow with two digits each and no delimiter between them
(common form for RFC 822 date headers).%:z
: time zone with colon, e.g. +05:00 (new since Ocamlnet 3)%%
: a `%' character.
val format : fmt:string -> t -> string
val mk_mail_date : ?zone:int -> float -> string
Example: "Sun, 06 Nov 1994 08:49:37 -0500"
.
val mk_usenet_date : ?zone:int -> float -> string
Example: "Sunday, 06-Nov-94 08:49:37 -0500"
.
Note that this format has only two digits for the year.
val mk_internet_date : ?zone:int -> float -> string
Example: "1996-12-19T16:39:57.89-08:00"
.