Format of this file is as follows: Each section begins with a line starting with a colon (:). The first one or two characters of the second line indicates the action to be performed: N - None A - Add S - Subtract I - Convert from RFC 822, a.k.a. Internet format i - Convert to RFC 822 V - Convert from ISO 8601 (V is for VCalender) v1 - Convert to ISO 8601 Calender format v2 - Convert to ISO 8601 Ordinal format v3 - Convert to ISO 8601 Week format T - Convert to TTimeStamp (no ouput needed - it's calculated) The rest of the first line consits of the addition, subtraction, or conversion format as necessary. The third line consists of the initial values given to the TIdDateTimeStamp. This will be in a relevant format to the test. The fourth line is the output to be expected. The format for basic dates uses letters as follows (case sensitive): Year (Y), Day of year (D), Second (S), Millisecond (L), Time Zone (Z), 24 Hour (H), 12 Hour (h), Week (W), Day of week (w), Month (M), Day of Month (d), Minute of Day (m), Minute Of Hour (U), Second of Minute (s) and Beat time (B) respectively. The Year, Day, Millisecond, and Time Zone options are valid for all three strings. The Beat Time, Day of Week, Day of Month and Minute of Hour are only valid for output. All others are valid for commands and output. Note: that for initialisation, only those items appearing are set, the others are left to their defaults. For commands, only those items listed are performed and for output, only those items listed are checked for. Note on Seconds and Milliseconds: The first second / millisecond of the day is zero. Note on Time Zones: The zones are given as an offset of minutes from GMT. So +60 is Middle European Time, whereas -60 is British Summer Time. Weekday numbers: w1 = Sunday, w2 = Monday, w3 = Tuesday, w4 = Wednesday, w5 = Thursday, w6 = Friday, w7 = Saturday. Quick summary: Line 1 is a colon. Line 3 initialises the date/time. Line 4 is the expected output. Line 2 is the action taken place that should get from Line 3 to Line 4. : Test 1 - Ensure year zero, day zero does not exist. N Y0 D0 S0 L0 Z0 Y1 D1 S0 L0 Z0 B41 W1 w2 : Test 2 - Ensure year zero, day zero does not exist. S L1 Y1 D1 S0 L0 Z0 Y-1 D365 S86399 L999 Z0 B41 : Test 3 - Simple addition of years. A Y1 Y1 D1 Y2 D1 : Test 4 - Simple addition of years A Y4 Y1 D1 Y5 D1 : Test 5 - Simple addition of days A D1 D2 : Test 6 - Simple addition of days A D100 D101 : Test 7 - Simple addition of seconds A S1 S1 : Test 8 - Simple addition of seconds A S40 S40 : Test 9 - Simple addition of milliseconds A L1 L1 : Test 10 - Simple addition of milliseconds A L200 L200 : Test 11 - Simple addition of Months A M1 M2 d1 : Test 12 - Simple addition of Months A M12 Y2 M1 D1 d1 : Test 13 - Simple addition of Weeks A W1 W2 w2 : Test 14 - Simple addition of Weeks A W50 W51 w2 : Test 15 - Beat time test N Z60 B0 : Test 16 - Beat time test S S1 Z60 B999 : Test 17 - Leap year test A M1 D28 Y1996 M2 d29 : Test 18 - Non-leap year test. A M1 D28 Y1997 M3 d1 : Test 19 - One-hundred year non-leap year. A M1 D28 Y2100 M3 d1 : Test 20 - Four-hundred year leap year. A M1 D28 Y2000 M2 d29 : Test 21 - Convert from Internet Format I Mon, 2 Oct 2000 08:25:57 w2 d2 M10 Y2000 h8 U25 s57 : Test 22 - Convert from Internet Format I Sat, 2 Dec 2000 08:25:57 w7 d2 M12 Y2000 h8 U25 s57 : Test 23 - Convert from Internet Format I Tue, 2 Oct 2001 08:25:57 w3 d2 M10 Y2001 H8 U25 s57 : Test 24 - Convert from Internet Format I 1 Jan 2006 08:25:57 Y2006 d1 h8 U25 s57 : Test 25 - Convert from Internet Format I 1 Jan 2034 08:25:57 Y2034 d1 h8 U25 s57 : Test 26 - Add huge number of years. A Y2147483646 Y2147483647 M1 d1 : Test 27 - Add huge number of days. A D2147483646 Y5879611 M7 d11 : Test 28 - Add huge number of seconds. A S2147483647 Y1970 D1 Y2038 M1 d19 H3 U14 s7 : Test 29 - Add huge number of milliseconds. A L2147483647 Y1 M1 d25 H20 U31 s23 L647 : Test 30 - Convert to Internet Format, first day of 1970, GMT. i Y1970 Thu, 1 Jan 1970 00:00:00 +0000 : Test 31 - Convert to Internet Format, first day of 2000, GMT. i Y2000 Sat, 1 Jan 2000 00:00:00 +0000 : Test 32 - Convert to Internet Format, 29 Feb 2000, GMT. i Y2000 D60 S60000 Tue, 29 Feb 2000 16:40:00 +0000 : Test 33 - Convert to Internet Format '29 Feb' 2001, GMT. i Y2001 D60 S10000 Thu, 1 Mar 2001 02:46:40 +0000 : Test 34 - Convert to Internet Format, Middle European Time zone. i Y2001 Z60 S45015 Mon, 1 Jan 2001 12:30:15 +0100 : Test 35 - Convert to Internet Format, Pacific Standard Time. i Y2001 Z-480 S39015 Mon, 1 Jan 2001 10:50:15 -0800 : Test 36 - Convert to ISO 8601 Calender v1 Y2000 S39015 2000-1-1T10:50:15 : Test 37 - Convert to ISO 8601 Ordinal v2 Y2000 S39015 2000-1T10:50:15 : Test 38 - Convert to ISO 8601 Week v3 Y2000 S39015 2000-W1-7T10:50:15 : Test 39 - Convert from ISO 8601 Calender format V 2000-1-1T12:35:15 Y2000 M1 d1 H12 U35 s15 : Test 40 - Convert from ISO 8601 Week format V 2004-W14-5T12:35:15 Y2004 W14 w5 H12 U35 s15 : Test 41 - Convert from ISO 8601 Ordinal format V 2004-145T12:35:15 Y2004 D145 H12 U35 s15 : Test 42 - Output as TTimeStamp T : Test 43 - Output as TTimeStamp T Y2 : Test 44 - Output as TTimeStamp T Y3 : Test 45 - Output as TTimeStamp T Y4 : Test 46 - Output as TTimeStamp T Y100 : Test 47 - Output as TTimeStamp T Y400 : Test 48 - Output as TTimeStamp T Y1970 :Test 49 - Output as TTimeStamp T Y2000 D1 :Test 50 - Output as TTimeStamp T Y2000 M3 d1 :Test 51 - Output as TTimeStamp T Y1999 D365 : Test 52 - Convert timestamp with a missing space from Internet Format I Wed,08 Jan 2003 08:09:16 PM Y2003 d8 M1 H20 U9 s16