NAME¶
convcal - convert dates to different formats
SYNOPSIS¶
convcal [
OPTIONS] [
DATE]
DESCRIPTION¶
convcal is part of the
grace software package, an application for
two-dimensional data visualization.
convcal converts dates from and to
various formats. The following date formats are supported (hour, minutes and
seconds are always optional):
- iso
- 1999-12-31T23:59:59.999
- european
- 31/12/1999 23:59:59.999 or 31/12/99 23:59:59.999
- us
- 12/31/1999 23:59:59.999 or 12/31/99 23:59:59.999
- days
- 123456.789
- seconds
- 123456.789
The formats are tried in the following order : users's choice, iso, european and
us (there is no ambiguity between calendar formats and numerical formats and
therefore no order is specified for them).
USAGE¶
convcal reads the dates either on the command line or in the standard
input if the command line contains no date.
The user's choice for the input format put one format before the other ones in
the trial list, this is mainly useful for US citizen which would certainly
prefer to have US format checked before european format. The default user's
choice (nohint) does nothing so the following formats of the list are checked.
The separators between various fields can be any characters in the set: "
:/.-T". One or more spaces act as one separator, other characters can not
be repeated, the T separator is allowed only between date and time, mainly for
iso8601. So the string "1999-12 31:23-59" is allowed (but not
recommended). The '-' character is used both as a separator (it is
traditionally used in iso8601 format) and as the unary minus (for dates in the
far past or for numerical dates). When the year is between 0 and 99 and is
written with two or less digits, it is mapped to the era beginning at wrap
year and ending at wrap year + 99 as follows :
[wy ; 99] -> [ wrap_year ; 100*(1 + wrap_year/100) - 1 ]
[00 ; wy-1] -> [ 100*(1 + wrap_year/100) ; wrap_year + 99]
so for example if the wrap year is set to 1950 (which is the default value),
then the mapping is :
range [00 ; 49] is mapped to [2000 ; 2049]
range [50 ; 99] is mapped to [1950 ; 1999]
this is reasonably Y2K compliant and is consistent with current use. Specifying
year 1 is still possible using more than two digits as follows :
"0001-03-04" is unambiguously March the 4th, year 1, even if the
user's choice is us format. However using two digits only is not recommended
(we introduce a 2050 bug here so this feature should be removed at some point
in the future ;-)
Numerical dates (days and seconds formats) can be specified using integer, real
or exponential formats (the 'd' and 'D' exponant markers from fortran are
supported in addition to 'e' and 'E'). They are computed according to a
customizable reference date. The default value is given by the REFDATE
constant in the source file. You can change this value as you want before
compiling, and you can change it at will using the -r command line option. The
default value in the distributed file is "-4713-01-01T12:00:00", it
is a classical reference for astronomical events (note that the '-' is used
here both as a unary minus and as a separator).
The program can be used either for Denys's and gregorian calendars. It does not
take into account leap seconds : you can think it works only in International
Atomic Time (TAI) and not in Coordinated Unified Time (UTC) ... Inexistant
dates are detected, they include year 0, dates between 1582-10-05 and
1582-10-14, February 29th of non leap years, months below 1 or above 12, ...
OPTIONS¶
A summary of the options supported by
convcal is included below.
- -h
- prints the help message on stderr and exits
successfully
- -i format
- set user's choice for input format, supported formats are
iso, european, us, days, seconds and nohint. At the beginning the input
format is nohint, which means the program try to guess the format by
itself, if the user's choice does not allow to parse the date, other
formats are tried
- -o format
- force output format, supported formats are iso, european,
us, days, seconds and nohint. At the beginning, the output format is
nohint, which means the program uses days format for dates read in any
calendar format and uses iso8601 for dates read in numerical format
- -r date
- set reference date (the date is read using the current
input format) at the beginning the reference is set according to the
REFDATE constant in the code, which is -4713-01-01T12:00:00 in the
distributed file.
- -w year
- set the wrap year to year
SEE ALSO¶
grace(1)
http://plasma-gate.weizmann.ac.il/Grace/
AUTHOR¶
Luc Maisonobe
This man-page was written by Jan Schaumann <jschauma@netmeister.org> as
part of "The Missing Man Pages Project". Please see
http://www.netmeister.org/misc/m2p2/index.html for details.