The t D (
date] command converts a
date form into a number, measured in days since Jan 1, 1 AD. The
result will be an integer if date is a pure date form, or a
fraction or float if date is a date/time form. Or, if its
argument is a number, it converts this number into a date form.
With a numeric prefix argument, t D takes that many objects (up to six) from the top of the stack and interprets them in one of the following ways:
The ‘date(year, month, day)’ function builds a pure date form out of the specified year, month, and day, which must all be integers. Year is a year number, such as 1991 (not the same as 91!). Month must be an integer in the range 1 to 12; day must be in the range 1 to 31. If the specified month has fewer than 31 days and day is too large, the equivalent day in the following month will be used.
The ‘date(month, day)’ function builds a pure date form using the current year, as determined by the real-time clock.
The ‘date(year, month, day, hms)’ function builds a date/time form using an hms form.
The ‘date(year, month, day, hour, minute, second)’ function builds a date/time form. hour should be an integer in the range 0 to 23; minute should be an integer in the range 0 to 59; second should be any real number in the range ‘[0 .. 60)’. The last two arguments default to zero if omitted.
The t J (
julian] command converts
a date form into a Julian day count, which is the number of days
since noon (GMT) on Jan 1, 4713 BC. A pure date is converted to an
integer Julian count representing noon of that day. A date/time form
is converted to an exact floating-point Julian count, adjusted to
interpret the date form in the current time zone but the Julian
day count in Greenwich Mean Time. A numeric prefix argument allows
you to specify the time zone; see Time Zones. Use a prefix of
zero to suppress the time zone adjustment. Note that pure date forms
are never time-zone adjusted.
This command can also do the opposite conversion, from a Julian day count (either an integer day, or a floating-point day and time in the GMT zone), into a pure date form or a date/time form in the current or specified time zone.
The t U (
converts a date form into a Unix time value, which is the number of
seconds since midnight on Jan 1, 1970, or vice-versa. The numeric result
will be an integer if the current precision is 12 or less; for higher
precision, the result may be a float with (precision-12)
digits after the decimal. Just as for t J, the numeric time
is interpreted in the GMT time zone and the date form is interpreted
in the current or specified zone. Some systems use Unix-like
numbering but with the local time zone; give a prefix of zero to
suppress the adjustment if so.
The t C (
command converts a date form from one time zone to another. You
are prompted for each time zone name in turn; you can answer with
any suitable Calc time zone expression (see Time Zones).
If you answer either prompt with a blank line, the local time
zone is used for that prompt. You can also answer the first
prompt with $ to take the two time zone names from the
stack (and the date to be converted from the third stack level).