# ODTIM > [HTML Version](odtim_sbr.htm) _Updated November 2018; see History_ **xcall ODTIM, stringfmt, odate, otime, flags** ODTIM performs the reverse function of [IDTIM](idtim_sbr.htm.md), i.e. it converts an internal format date and/or time to a string format. Its formatting options are much more extensive, however, than the formats allowed by IDTIM. **Parameters** _stringfmt _([String](string.htm.md)) \[out\] the formated date/time string is returned here. _odate _([Num](num.htm.md)) \[in\] should contain the internal (aka "separated" – see [IDTIM](idtim_sbr.htm.md) for details) date to be formatted. 0 is taken to mean the current date. _otime _([Num](num.htm.md)) \[in\] should contain the internal time—seconds since midnight—to be displayed, with 0 indicating either the current time (if _odate_ is also 0), or midnight (if _odate_ <> 0). As there are 86400 seconds in 24 hours, values greater than or equal to 86400 may produced undefined results; see Comments below. _flags _([Num](num.htm.md)) \[in\] must specify a sum of desired formatting options from the following table: | **Value** | **Meaning** | |------|------| | \&h00000001 | Omit date from output (ignore all other date related flags) | | \&h00000002 | Output the day of the week | | \&h00000004 | Use the full name of the day of the week; else use the first three characters | | \&h00000008 | Output the month as a number (1-12) and ignore flag \&h0010. | | \&h00000010 | Output the full name of the month; else use the first character abbreviation | | \&h00000020 | Output four digit year; else two digit year | | \&h00000040 | Output the month first, then the day; else the day first, then the month | | \&h00000080 | If \&h0100 not specified, use spaces to separate the parts of the date, as in 17 Jul 2013. If \&h0100 is also specified (i.e. \&h0080 + \&h0100) then use separator character defined in the language definition file (LDF). | | \&h00000100 | If \&h0080 not specified, use slashes to separate the parts of the date, as in 7/17/03. If \&h0080 is also specified, use LDF separator character (see above). | | \&h00000200 | Omit time from output (ignore all other time related flags) | | \&h00000400 | Omit seconds from the time output | | \&h00000800 | Use 12 hour time format with AM/PM; else use 24 hour format | | \&h00001000 | Do not output a separator between the hours and minutes (also see \&h0020000) | | \&h00002000 | Use colon as the time separator; else use the character defined in the LDF | | \&h00004000 | Suppress leading zeroes from numeric portion of date. | | \&h00020000 | Do not output a separator between the minutes and the seconds | | \&h00200000 | Do not output date punctuation | | \&h00800000 | Do not output the day | | \&h01000000 | Do not output the month | | \&h02000000 | Do not output the year | [Hex-Decimal Values](hex-decimalvalues.htm.md) **Comments** Two special flags values, which override the bit settings in the table above, are also recognized: • flags = 0 produces output of the form: 17-Jul-03 13:15:58. • flags = -1 (\&hffffffff) produces output of the form: Monday, July 17, 2013 01:15:58 PM In both of the above special cases, the LDF settings will be applied as appropriate. As of 6.5.1650.1 (see History), _otime_ values >= 86400 are handled as follows: • If the date output is omitted (flags bit \&h0001 set) and 24 hour format is requested (flags bit \&h0800 not set), then otime is treated as a cumulative value with  no particular upper limit, e.g. otime = 455571 results in 126:32:51, which might represent an elapsed time for some activity.  • If the date is to be included in the output (flags bit \&h0001 not set), then the odate value specified will be increased by one day for each multiple of 86400 in otime, with otime reduced accordingly.  For example, if odate = 0 and otime = 86401, it will display tomorrow's date and 00:00:01 as the time. • If the date output is omitted and 12 hour format requested (flags bits \&h0801) the result is undefined. **See Also** The system function [ODTIM()](odtim().htm.md) provides a somewhat simpler syntax for the same operation. **History** 2018 October, A-Shell 6.5.1650: special handling of _otime_ >=86400; see Comments.