| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- // 1. Verifying parsing with date string in GMT format.
- var datestring = "Sat, 12 Aug 1995 13:30:00GMT";
- WScript.Echo(Date.parse(datestring));
- // 2. Verifying parse date with timezone given in paranthesis.
- // This parses the date to local timezone and not the timezone given in paranthesis.
- datestring = "Sat, 12 Aug 1995 13:30:00 ( GMT )";
- // Covers the code for space and ( )s int the parser.
- WScript.Echo(Date.parse(datestring));
- // 3. Verifying parse date with invalid timezone.
- // This should cover the error condition.
- datestring = "Sat, 12 Aug 1995 13:30:00NX-01";
- var actualResult = Date.parse(datestring);
- WScript.Echo(actualResult);
- // 4. Verifying parse date with timezone.
- datestring = "Sat, 12 Aug 1995 13:00:00 z";
- WScript.Echo(Date.parse(datestring));
- // 5. Verifying conversion behaviors
- var toStrings;
- var valueOfs;
- var toStringCalled;
- var valueOfCalled;
- toStrings =
- [
- {},
- function ()
- {
- toStringCalled = true;
- return {};
- },
- function ()
- {
- toStringCalled = true;
- return undefined;
- },
- function ()
- {
- toStringCalled = true;
- return "1/1/1970 12:00 am";
- }
- ];
- valueOfs =
- [
- {},
- function ()
- {
- valueOfCalled = true;
- return {};
- },
- function ()
- {
- valueOfCalled = true;
- return undefined;
- },
- function ()
- {
- valueOfCalled = true;
- return "1/1/1970 1:00 am";
- },
- function ()
- {
- valueOfCalled = true;
- return "84";
- }
- ];
- for (var ts in toStrings)
- {
- for (var vo in valueOfs)
- {
- toStringCalled = false;
- valueOfCalled = false;
- var obj = { toString: toStrings[ts], valueOf: valueOfs[vo] };
- try
- {
- WScript.Echo(Date.parse(obj));
- }
- catch (ex)
- {
- WScript.Echo("Got error:");
- WScript.Echo(" name: " + ex.name);
- WScript.Echo(" message: " + ex.message);
- }
- WScript.Echo("toString called: " + (toStringCalled ? "yes" : "no"));
- WScript.Echo("valueOf called: " + (valueOfCalled ? "yes" : "no"));
- }
- }
- // Verifying different precisions for the milliseconds
- // No milliseconds
- WScript.Echo(Date.parse("2011-11-08T19:48:43"));
- // Missing digits after .
- WScript.Echo(Date.parse("2011-11-08T19:48:43."));
- // milliseconds, 1 digit only, treat it as hundreds
- WScript.Echo(Date.parse("2011-11-08T19:48:43.1"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.1a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0a"));
- // milliseconds, 2 digit only, treat it as tens
- WScript.Echo(Date.parse("2011-11-08T19:48:43.12"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.12a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.01"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.01a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00a"));
- // milliseconds, canonical 3 digit, per EcmaScript spec
- WScript.Echo(Date.parse("2011-11-08T19:48:43.123"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.123a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.001"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.001a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.000"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.000a"));
- // milliseconds, with more than 3 digits, ignore all digits after the third
- WScript.Echo(Date.parse("2011-11-08T19:48:43.1234"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.1234a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0011"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0011a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0001"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0001a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0000"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.0000a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.12345"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.12345a"))
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00111"));;
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00111a"));;
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00001"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00001a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00000"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00000a"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00000000000001"));
- WScript.Echo(Date.parse("2011-11-08T19:48:43.00000000000001a"));
- // Verifying non-standard delimiters
- // Some delimiters are allowed to be compatible with other browsers
- WScript.Echo(Date.parse("2011-11-08/19:48:43"));
- WScript.Echo(Date.parse("2011-11-08:19:48:43"));
- WScript.Echo(Date.parse("2011-11-08 19:48:43"));
- WScript.Echo(Date.parse("2011-11-08/: 19:48:43"));
- WScript.Echo(Date.parse("2011/11/08/19:48:43"));
- WScript.Echo(Date.parse("2011/11/08:19:48:43"));
- WScript.Echo(Date.parse("2011/11/08 19:48:43"));
- WScript.Echo(Date.parse("2011/11/08/: 19:48:43"));
- // Mixed delimiters in the date are allowed
- WScript.Echo(Date.parse("2011-11/08 19:48:43"));
- WScript.Echo(Date.parse("2011/11-08 19:48:43"));
- // Multiple 'T's aren't allowed
- WScript.Echo(Date.parse("2011-11-08TT19:48:43"));
|