The date and time utilities are:
%D: Displays the current date using the [d]d-mmm-[yy]yy format.
%DATE: Converts input date to the $HOROLOG format.
%H: Converts date and time to and from $HOROLOG format.
%T: Displays the current time in [h]h:mm AM/PM format.
%TI: Converts time to $HOROLOG format.
%TO: Converts the current time from $HOROLOG format to [h]h:mm AM/PM format.
The "%" sign has been removed from the topic headings below, intentionally.
The Intrinsic Special Variable $ZDATEFORM interprets year inputs with two digits as described in the following table:
| 
 $ZDATEFORM  | 
 INTERPRETATION OF 2 DIGIT YEAR  | 
 OUTPUT OF %D  | 
| 
 0:  | 
 20th century (1900 - 1999)  | 
 2 digits  | 
| 
 1:  | 
 current century (2000 - 2099)  | 
 4 digits  | 
| 
 (1841-9999):  | 
 the next 99 years starting from $ZDATEFORM (x - x+99)  | 
 4 digits  | 
| 
 other:  | 
 current century (2000 - 2099)  | 
 4 digits  | 
Example:
If $ZDATEFORM is 1965, an input year of 70 would be interpreted as 1970, whereas an input year of 10 would be taken as 2010.
The %D utility displays the current date using the [d]d-mmm-[yy]yy format. If a routine uses this function repetitively, put the utility code directly into the M program.
INT: Sets variable %DAT to current date.
FUNC[()]: Invokes an extrinsic function returning today's date.
For the following examples, $ZDATEFORM is assumed to be one (1).
Example:
GTM>DO ^%D 22-NOV-2010
This example invokes %D in Direct Mode. Then %D displays the current date.
Example:
GTM>DO INT^%D GTM>ZWRITE %DAT="22-NOV-2010"
This example invokes %D with the label INT (INT^%D). The variable %DAT contains the current date. ZWRITE displays the contents of the output variable.
Example:
GTM>WRITE $$FUNC^%D 22-NOV-2010
This example invokes %D as an extrinsic function with the label FUNC. $$FUNC^%D returns today's date.
The %DATE utility converts an input date to the $HOROLOG format. The $HOROLOG format represents time as the number of days since December 31, 1840. The routine has entry points for interactive or non-interactive use.
INT: Converts %DS input non-interactively, if defined, otherwise the current date.
FUNC(t): Invokes an extrinsic function returning $HOROLOG format of the argument.
| 
 %DATE Input Formats  | ||
| 
 ELEMENT  | 
 DESCRIPTION  | 
 EXAMPLES  | 
| 
 DAYS  | 
 1 or 2 digits  | 
 1,01,24  | 
| 
 MONTHS  | 
 1 or 2 digits  | 
 3,03,12  | 
| 
 Abbreviations accepted  | 
 MAR  | |
| 
 Numeric months precede days  | 
 1/5 is 5 Jan  | |
| 
 Alpha months may precede or follow days  | 
 3 MAR MAR 3  | |
| 
 YEARS  | 
 2 or 4 digits  | 
 11/22/98 11/22/2002  | 
| 
 A missing year defaults to current year  | 
 11/22  | |
| 
 TODAY  | 
 Abbreviation accepted  | 
 T[ODAY]  | 
| 
 t+/- N. no. of days  | 
 t+1 t-3  | |
| 
 TOMORROW  | 
 Abbreviation accepted  | 
 TOM[ORROW]  | 
| 
 YESTERDAY  | 
 Abbreviation accepted  | 
 Y[ESTERDAY]  | 
| 
 NULL INPUT  | 
 Defaults to today  | |
| 
 DELIMITERS  | 
 All non-alphanumeric character(s) except the + or - offset  | 
 11/22/98 11 Nov 98 22 Nov, 2002 11-22-2002  | 
Example:
GTM>DO ^%DATE Date: GTM>ZWRITE %DN=62047
This example invokes %DATE at the GTM> prompt. After pressing <RETURN> at the Date: prompt, %DATE converts today's date (for example, 11/22/2010) to the $HOROLOG format. ZWRITE displays the contents of the output variable.
Example:
GTM>DO INT^%DATE GTM>ZWRITE %DN=59105
This example invokes INT^%DATE, which converts the current date non-interactively into $HOROLOG format. ZWRITE displays the contents of the output variable.
Example:
GTM>SET %DS="10/20/2010" GTM>DO INT^%DATE GTM>ZWRITE %DN=62019 %DS="10/20/2010"
This example sets the input variable %DS prior to invoking INT^%DATE, which converts that date non-interactively to $HOROLOG format.
Example:
GTM>WRITE $$FUNC^%DATE("10/20/2010")
62010 This example invokes %DATE with the label FUNC as an extrinsic function to convert an input date to $HOROLOG. If the invocation does not supply a date for $$FUNC^%DATE, FUNC converts the current date.
Example:
GTM>WRITE $ZDATEFORM
1975
GTM>WRITE $$FUNC^%DATE("10/20/80")
51062
GTM>WRITE $ZDATE(51062)
10/20/1980
GTM>WRITE $$FUNC^%DATE("10/20/10")
62019
GTM>WRITE $ZDATE(62019)
10/20/2010This example shows the use of a year limit in $ZDATEFORM. Two digit years are interpreted to be in the interval (1975, 2074) since $ZDATEFORM is 1975; the input year "80" is interpreted as the year "1980" and "10" is interpreted as the year "2010". The example invokes FUNC^%DATE to convert the input date to $HOROLOG format. $ZDATE() is used to convert the $HOROLOG format date to mm/dd/yyyy format.
The %H utility converts date and time to and from $HOROLOG format.
%CDS: Converts %DT $HOROLOG input date to mm/dd/yyyy format.
%CTS: Converts %TM $HOROLOG input time to external format.
%CDN: Converts %DT input date to $HOROLOG format.
%CTN: Converts %TM input time to $HOROLOG format.
CDS(dt): Extrinsic entry that converts the $HOROLOG argument to external date format.
CTS(tm): Extrinsic entry that converts the $HOROLOG argument to external time format.
CDN(dt): Extrinsic entry that converts the argument to $HOROLOG format.
CTN(tm): Extrinsic entry that converts the argument to $HOROLOG format.
%DT: Contains input date in either $HOROLOG or mm/dd/[yy]yy format, depending on the format expected by the utility entry point.
%TM: Contains input time in either $HOROLOG or [h]h:mm:ss format, depending on the format expected by the utility entry point.
Example:
GTM>SET %DT=+$H DO %CDS^%H GTM>ZWRITE %DAT="10/20/2010" %DT=62047
This example sets %DT to the current date in $HOROLOG format and converts it to mm/dd/yyyy format by invoking %H at the label %CDS. %H returns the converted date in the variable %DAT. ZWRITE displays the contents of the variables.
Example:
GTM>SET %DT="10/20/2002" DO %CDN^%H GTM>ZWRITE %DAT=59097 %DT="10/20/2002"
This example sets the variable %DT to a date in mm/dd/yyyy format and invokes %H at the label %CDN. %H returns the converted date in the variable %DAT. ZWRITE displays the contents of the variables.
Example:
GTM>SET %TM=$P($H,",",2) DO %CTS^%H GTM>ZWRITE %TIM="17:41:18" %TM=63678
This example sets the variable %TM to the current time in $HOROLOG format using a $PIECE() function to return only those digits of the $HOROLOG string that represent the time. The example then invokes %H at the label %CTS. %H returns the converted time in the variable %TIM. ZWRITE displays the contents of the variables.
Example:
GTM>SET %TM="17:41:18" DO %CTN^%H GTM>ZWRITE %TIM=63678 %TM="17:41:18"
This example sets the variable %TM to a time in hh:mm:ss format, and invokes %H at the label %CTN. %H returns the converted time in the variable %TIM. ZWRITE displays the contents of the variables.
Example:
GTM>WRITE $$CDS^%H(62019) 11/17/2010
This invokes CDS^%H as an extrinsic function to convert the external argument to external date format.
Example:
GTM>WRITE $ZDATEFORM
1980
GTM>WRITE $$CDN^%H("10/20/02")
59097
GTM>WRITE $ZDATE(59097)
10/20/2002
GTM>WRITE $$CDN^%H("10/20/92")
55445
GTM>WRITE $ZDATE(55445)
10/20/1992 This example shows the use of a year limit in $ZDATEFORM. Two digit years are interpreted to be in the interval of 1980 - 2079; since $ZDATEFORM is 1980, the input year "02" is interpreted as "2002" and "92" is interpreted as "1992". This example invokes CDN^%H to convert the argument in mm/dd/yy format to $HOROLOG format. $ZDATE() is used to conver the $HOROLOG format date to mm/dd/yyyy format.
The %T utility displays the current time in [h]h:mm AM/PM. If a routine uses this function repetitively, put the utility code directly into the M program.
INT: Sets %TIM to current time in [h]h:mm AM/PM format.
FUNC[()]: Invokes an extrinsic function returning the current time.
Example:
GTM>DO ^%T 8:30 AM
This example invokes %T, which prints the current time and does not set %TIM.
Example:
GTM>DO INT^%T GTM>ZWRITE %TIM="8:30 AM"
This example invokes INT^%T, which sets the variable %TIM to the current time. ZWRITE displays the contents of the variable.
Example:
GTM>WRITE $$FUNC^%T 8:30 AM
This example invokes FUNC as an extrinsic function, which returns the current time.
The %TI utility converts time to $HOROLOG format. The $HOROLOG format represents time as the number of seconds since midnight. %TI returns the converted time in the variable %TN. The routine has entry points for interactive or non-interactive use.
INTNon-interactively converts %TS to $HOROLOG format; if %TS is not defined, then current time is converted.
FUNC[(ts)]Invokes an extrinsic function returning $HOROLOG format of the argument, or if no argument, the $HOROLOG format of the current time.
%TS Contains input time.
The following table summarizes input formats accepted by %TI.
| 
 %TI Input Formats  | ||
| 
 ELEMENT  | 
 DESCRIPTION  | 
 EXAMPLES  | 
| 
 HOURS  | 
 1 or 2 digits  | 
 3,03,12  | 
| 
 MINUTES  | 
 2 digits  | 
 05,36  | 
| 
 AM or PM  | 
 AM or PM required  | 
 9:00 AM or am 9:00 PM or pm  | 
| 
 Abbreviation accepted  | 
 9:00 A or a 9:00 P or p  | |
| 
 NOON  | 
 Abbreviation accepted  | 
 N[OON]  | 
| 
 MIDNIGHT or MIDNITE  | 
 Abbreviation accepted  | 
 M[IDNIGHT] or m[idnight] M[IDNITE] or m[idnite]  | 
| 
 MILITARY  | 
 No punctuation (hhmm)  | 
 1900, 0830  | 
| 
 NULL INPUT  | 
 Defaults to current time  | |
| 
 DELIMITERS  | 
 Colon between hours and minutes  | 
 3:00  | 
Example:
GTM>DO ^%TI Time: 4:02 PM GTM>ZWRITE %TN=57720
This example invokes %TI, which prompts for an input time. Press <RETURN> to convert the current time. ZWRITE displays the contents of the output variable.
Example:
GTM>ZWRITE GTM>DO INT^%TI GTM>ZWRITE %TN=40954
This example invokes INT^%TI to convert the current time non-interactively. ZWRITE displays the contents of the output variable %TN.
Example:
GTM>SET %TS="8:30AM" GTM>DO INT^%TI GTM>ZWRITE %TN=30600 %TS="8:30AM"
This example sets the variable %TS prior to invoking INT^%TI. %TI uses %TS as the input time. ZWRITE displays the contents of the variables.
Example:
GTM>WRITE $$FUNC^%TI("8:30AM")
30600 This example invokes %TI as an extrinsic function to convert the supplied time to $HOROLOG format. If there is no argument (i.e., $$FUNC^%TI), %TI converts the current time.
The %TO utility converts the input time from $HOROLOG format to [h]h:mm AM/PM format. Put the utility code directly into the M program if the routine uses this function repetitively.
INT: Converts non-interactively %TS, or if %TS is not defined the current time to [h]h:mm AM/PM format.
Example:
GTM>DO INT^%TI,^%TO GTM>ZWRITE %TN=62074 %TS="5:14 PM"
This example invokes INT^%TI to set %TN to the current time and invokes %TO to convert the time contained in %TN to the [h]h:mm AM/PM format. %TO returns the converted time in the variable %TS. ZWRITE displays the contents of the variables.


