xcall IDTIM, stringfmt, idate, itime, flags, status
IDTIM.SBR converts a string format date and/or time into so called internal format. (Internal format dates are also referred to as separated format, and is the format returned by the DATE system function. Internal format time is simply the number of seconds since midnight.) The inverse function is ODTIM, which see for converts an converting internal format date and/or time to a string format.
stringfmt
should be set to the date and/or time be converted, with the time following the date (with a space separator) if both date and time are included. (Also see flags parameter, which indicates if date and/or time are present.) The date, if present, should be in MM-DD-{CC}YY or DD-MM-{CC}YY format, depending on your language definition file specification for date order. The separator character, however, need not be a dash or even match the language definition file; it can be any non-numeric character. The time format is HH:MM{:SS} {AM/PM}. Legal examples would be:
12/30/07 13:01
01-01-2007 10:15:33 PM
23:01:10
05.03.1915
If only two digits are specified for the year, it is assumed to be in the twentieth century (19xx) unless the SBR=CCYY:## parameter is included in the miame.ini, in which case it will determine the YY cutoff below which we assume 20xx instead of 19xx.
idate (F,6)
will return the internal format date, or zero if the date is not included in the input string. Note, however, that to access the individual separated fields within it, you need to assign the F,6 value to a B,4 which is mapped on top of the separated date structure, as in the following example:
MAP1 Sepdate
MAP2 Mon,B,1 ! Month 1-12
MAP2 Day,B,1 ! Day 1-31
MAP2 Yr,B,1 ! Year-1900
MAP2 Dow,B,1 ! Day of week (0=Mon, 6=Sun)
MAP1 Bdate,B,4,@Sepdate ! B,4 version of Sepdate, as used by
! the DATE system function
MAP1 Idate,F,6 ! F,6 version as needed by IDTIM
xcall IDTIM, StringFmt, Idate, Itime, Flags, Status
Bdate = Idate
Print "Separated date: ";Mon;Day;Yr;Dow
Bdate = DATE ! Get today's date (for comparison)
Print "Today's separated date: ";Mon;Day;Yr;Dow
itime (F,6)
will return the internal format time (i.e. seconds since midnight) or zero if the time is not present.
flags (Num)
should be set to 0 to process both the date and time; 1 if the string is expected to contain only the time, and 2 if it is expected to contain only the date.
status (F,6)
will return a code of 0 to indicate a successful conversion, or –1 to indicate an error (such as an invalid format or invalid date).
History
2011 September, A-Shell 5.1.1232: Flag +4 allows the hh value to be greater than 24. Mainly useful for verifying validity of an elapsed number of hours. The returned internal time will still be just the seconds since the last midnight.