Date and Time Format Strings

You can create a standard or custom date and time format string, which consists of one or more date specifiers, to define how to format date and time data using Composite Formatting of strings.

Standard Date and Time Format Strings

A standard date and time format string uses a single format specifier to define the text representation of a date and time value. Any date and time format string that contains more than one character, including white space, is interpreted as a custom date and time format string; for more information, refer to Custom Date and Time Format Strings (see below).

The following table describes the standard date and time format specifiers and displays a result string produced by each format specifier. Note that the string representations of date and time values typically vary by culture. See the Example section for EasyLanguage code samples.

Specifier Description Examples
"d" Short date pattern. 2009-06-15T13:45:30 -> 6/15/2009
"D" Long date pattern. 2009-06-15T13:45:30 -> Monday, June 15, 2009
"f" Full date/time pattern (short time). 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45 PM
"F" Full date/time pattern (long time). 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45:30 PM
"g" General date/time pattern (short time). 2009-06-15T13:45:30 -> 6/15/2009 1:45 PM
"G" General date/time pattern (long time). 2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM
"M", "m" Month/day pattern. 2009-06-15T13:45:30 -> June 15
"O", "o" Round-trip date/time pattern.

DateTime values:
2009-06-15T13:45:30 (DateTimeKind.Local) --> 2009-06-15T13:45:30.0000000-07:00
2009-06-15T13:45:30 (DateTimeKind.Utc) --> 2009-06-15T13:45:30.0000000Z
2009-06-15T13:45:30 (DateTimeKind.Unspecified) --> 2009-06-15T13:45:30.0000000

DateTimeOffset values:
2009-06-15T13:45:30-07:00 --> 2009-06-15T13:45:30.0000000-07:00
"R", "r" RFC1123 pattern. 2009-06-15T13:45:30 -> Mon, 15 Jun 2009 20:45:30 GMT
"s" Sortable date/time pattern.

2009-06-15T13:45:30 (DateTimeKind.Local) -> 2009-06-15T13:45:30
2009-06-15T13:45:30 (DateTimeKind.Utc) -> 2009-06-15T13:45:30
"t" Short time pattern. 2009-06-15T13:45:30 -> 1:45 PM
"T" Long time pattern. 2009-06-15T13:45:30 -> 1:45:30 PM
"u" Universal sortable date/time pattern.

With a DateTime value: 2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z

With a DateTimeOffset value: 2009-06-15T13:45:30 -> 2009-06-15 20:45:30Z
"U" Universal full date/time pattern.

2009-06-15T13:45:30 -> Monday, June 15, 2009 8:45:30 PM
"Y", "y" Year month pattern. 2009-06-15T13:45:30 -> June, 2009
Any other single character Unknown specifier. Throws a run-time FormatException .
Custom Date and Time Format Strings

A custom format string consists of one or more custom date and time format specifiers. Any string that is not a standard date and time format string (i.e. containing more than one character) is interpreted as a custom date and time format string.

The following table describes the custom date and time format specifiers and displays a result string produced by each format specifier. Note that the string representations of date and time values typically vary by culture. See the Example section for EasyLanguage code samples.

Specifier Description Examples
"d" The day of the month, from 1 through 31.
2009-06-01T13:45:30 -> 1
2009-06-15T13:45:30 -> 15
"dd" The day of the month, from 01 through 31. 2009-06-01T13:45:30 -> 01
2009-06-15T13:45:30 -> 15
"ddd" The abbreviated name of the day of the week. 2009-06-15T13:45:30 -> Mon
"dddd" The full name of the day of the week. 2009-06-15T13:45:30 -> Monday
"g", "gg" The period or era. 2009-06-15T13:45:30.6170000 -> A.D.
"h" The hour, using a 12-hour clock from 1 to 12.
.
2009-06-15T01:45:30 -> 1
2009-06-15T13:45:30 -> 1
"hh" The hour, using a 12-hour clock from 01 to 12.
2009-06-15T01:45:30 -> 01
2009-06-15T13:45:30 -> 01
"H" The hour, using a 24-hour clock from 0 to 23.
2009-06-15T01:45:30 -> 1
2009-06-15T13:45:30 -> 13
"HH" The hour, using a 24-hour clock from 00 to 23.
2009-06-15T01:45:30 -> 01
2009-06-15T13:45:30 -> 13
"K" Time zone information.

With DateTime values:
2009-06-15T13:45:30, Kind Unspecified ->
2009-06-15T13:45:30, Kind Utc -> Z
2009-06-15T13:45:30, Kind Local -> -07:00 (depends on local computer settings)

With DateTimeOffset values:
2009-06-15T01:45:30-07:00 --> -07:00
2009-06-15T08:45:30+00:00 --> +00:00
"m" The minute, from 0 through 59.
.
2009-06-15T01:09:30 -> 9
2009-06-15T13:29:30 -> 29
"mm" The minute, from 00 through 59.
2009-06-15T01:09:30 -> 09
2009-06-15T01:45:30 -> 45
"M" The month, from 1 through 12. 2009-06-15T13:45:30 -> 6
"MM" The month, from 01 through 12. 2009-06-15T13:45:30 -> 06
"MMM" The abbreviated name of the month. . 2009-06-15T13:45:30 -> Jun
"MMMM" The full name of the month. 2009-06-15T13:45:30 -> June
"s" The second, from 0 through 59. . 2009-06-15T13:45:09 -> 9
"ss" The second, from 00 through 59. 2009-06-15T13:45:09 -> 09
"t" The first character of the AM/PM designator. 2009-06-15T13:45:30 -> P
"tt" The AM/PM designator. 2009-06-15T13:45:30 -> PM
"y" The year, from 0 to 99.

0001-01-01T00:00:00 -> 1
0900-01-01T00:00:00 -> 0
1900-01-01T00:00:00 -> 0
2009-06-15T13:45:30 -> 9
2019-06-15T13:45:30 -> 19
"yy" The year, from 00 to 99.

0001-01-01T00:00:00 -> 01
0900-01-01T00:00:00 -> 00
1900-01-01T00:00:00 -> 00
2019-06-15T13:45:30 -> 19
"yyy" The year, with a minimum of three digits.

0001-01-01T00:00:00 -> 001
0900-01-01T00:00:00 -> 900
1900-01-01T00:00:00 -> 1900
2009-06-15T13:45:30 -> 2009
"yyyy" The year as a four-digit number.

0001-01-01T00:00:00 -> 0001
0900-01-01T00:00:00 -> 0900
1900-01-01T00:00:00 -> 1900
2009-06-15T13:45:30 -> 2009
"yyyyy" The year as a five-digit number.
0001-01-01T00:00:00 -> 00001
2009-06-15T13:45:30 -> 02009
"z" Hours offset from UTC, with no leading zeros. 2009-06-15T13:45:30-07:00 -> -7
"zz" Hours offset from UTC, with a leading zero for a single-digit value. 2009-06-15T13:45:30-07:00 -> -07
"zzz" Hours and minutes offset from UTC. 2009-06-15T13:45:30-07:00 -> -07:00
":" The time separator. 2009-06-15T13:45:30 -> :
"/" The date separator. 2009-06-15T13:45:30 -> / (2009/06/15)
"string"

'string'
Literal string delimiter.

2009-06-15T13:45:30 ("arr:" h:m t) -> arr: 1:45 P

2009-06-15T13:45:30 ('arr:' h:m t) -> arr: 1:45 P
% Defines the following character as a custom format specifier. 2009-06-15T13:45:30 (%h) -> 1
The escape character. 2009-06-15T13:45:30 (h \h) -> 1 h
Any other character The character is copied to the result string unchanged. 2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A
Example

The following shows the use of composite formatting.  

Import Example

Composite formatting sample print output

  1. Click on the Import Example link to import the example into TradeStation.   
  2. Go to the TradeStation platform and create a Chart window.  Use the Insert - Indicator menu sequence and Add !ex_CompositeFormatting to the chart window. Select the View > EasyLanguage Print Log to see the text output.
  3. To review or modify the example code, go to the TS Development Environment and open indicator !ex_CompositeFormatting in the EasyLanguage Editor.