Go forward to Date Functions. Go backward to Date Arithmetic. Go up to Date Arithmetic.

Date Conversions
----------------

The `t D' (`calc-date') [`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' (`calc-julian') [`julian'] command converts a date form into
a Julian day count, which is the number of days since noon 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' (`calc-unix-time') [`unixtime'] command 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 precisions, 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' (`calc-convert-time-zones') [`tzconv'] 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).