19258b6bc66e09368ada54001f619d53b4fc976d5ager@chromium.org// Copyright 2006-2008 the V8 project authors. All rights reserved. 243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Redistribution and use in source and binary forms, with or without 343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// modification, are permitted provided that the following conditions are 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// met: 543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Redistributions of source code must retain the above copyright 743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// notice, this list of conditions and the following disclaimer. 843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Redistributions in binary form must reproduce the above 943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// copyright notice, this list of conditions and the following 1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// disclaimer in the documentation and/or other materials provided 1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// with the distribution. 1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// * Neither the name of Google Inc. nor the names of its 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// contributors may be used to endorse or promote products derived 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// from this software without specific prior written permission. 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// This file relies on the fact that the following declarations have been made 2941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// in v8natives.js: 30f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org// var $isFinite = GlobalIsFinite; 3141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 32e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgvar $Date = global.Date; 33e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 3443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ------------------------------------------------------------------- 3543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// This file contains date support implemented in JavaScript. 3743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 382abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org// Helper function to throw error. 392abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgfunction ThrowDateTypeError() { 402abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org throw new $TypeError('this is not a Date object.'); 412abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org} 422abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 4343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.orgvar timezone_cache_time = NAN; 4543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvar timezone_cache_timezone; 4643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction LocalTimezone(t) { 48b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org if (NUMBER_IS_NAN(t)) return ""; 49eadaf2282ee421d7a63a21d71369b029105341ccager@chromium.org if (t == timezone_cache_time) { 5043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return timezone_cache_timezone; 5143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 524efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var timezone = %DateLocalTimezone(t); 5343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen timezone_cache_time = t; 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen timezone_cache_timezone = timezone; 5543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return timezone; 5641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 5743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction UTC(time) { 602abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(time)) return time; 61421a0f4d7b8d61d313e8bcc630f34f942d7c811ewhesse@chromium.org // local_time_offset is needed before the call to DaylightSavingsOffset, 62421a0f4d7b8d61d313e8bcc630f34f942d7c811ewhesse@chromium.org // so it may be uninitialized. 634efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return %DateToUTC(time); 6441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 6543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.11 6843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction MakeTime(hour, min, sec, ms) { 69690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(hour)) return NAN; 70690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(min)) return NAN; 71690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(sec)) return NAN; 72690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(ms)) return NAN; 7343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return TO_INTEGER(hour) * msPerHour 7443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen + TO_INTEGER(min) * msPerMinute 7543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen + TO_INTEGER(sec) * msPerSecond 7643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen + TO_INTEGER(ms); 7741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 7843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.12 8143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction TimeInYear(year) { 8243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return DaysInYear(year) * msPerDay; 8341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 8443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Compute number of days given a year, month, date. 8743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Note that month and date can lie outside the normal range. 8843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// For example: 8943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// MakeDay(2007, -4, 20) --> MakeDay(2006, 8, 20) 9043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// MakeDay(2007, -33, 1) --> MakeDay(2004, 3, 1) 9143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// MakeDay(2007, 14, -50) --> MakeDay(2007, 8, 11) 9243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction MakeDay(year, month, date) { 93690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) return NAN; 9443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 9569ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org // Convert to integer and map -0 to 0. 9669ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org year = TO_INTEGER_MAP_MINUS_ZERO(year); 9769ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org month = TO_INTEGER_MAP_MINUS_ZERO(month); 9869ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org date = TO_INTEGER_MAP_MINUS_ZERO(date); 9943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 100ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org if (year < kMinYear || year > kMaxYear || 101c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org month < kMinMonth || month > kMaxMonth) { 102690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org return NAN; 10343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 10443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 105c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org // Now we rely on year and month being SMIs. 106fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org return %DateMakeDay(year | 0, month | 0) + date - 1; 10741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 10843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 10943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 11043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.13 11143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction MakeDate(day, time) { 1125f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org var time = day * msPerDay + time; 1135f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // Some of our runtime funtions for computing UTC(time) rely on 1145f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // times not being significantly larger than MAX_TIME_MS. If there 1155f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // is no way that the time can be within range even after UTC 1165f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // conversion we return NaN immediately instead of relying on 1175f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // TimeClip to do it. 118690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if ($abs(time) > MAX_TIME_BEFORE_UTC) return NAN; 1195f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org return time; 12041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 12143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 12243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 12343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.14 12443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction TimeClip(time) { 125690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(time)) return NAN; 126690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if ($abs(time) > MAX_TIME_MS) return NAN; 12743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return TO_INTEGER(time); 12841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 12943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 13043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 13168ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org// The Date cache is used to limit the cost of parsing the same Date 13268ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org// strings over and over again. 13368ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.orgvar Date_cache = { 13468ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // Cached time value. 135ecfa363c53ab5e5f01fb0645fabd2c060c967385ulan@chromium.org time: 0, 13668ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // String input for which the cached time is valid. 13768ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org string: null 13868ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org}; 13968ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org 14068ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org 141e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgfunction DateConstructor(year, month, date, hours, minutes, seconds, ms) { 14286f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org if (!%_IsConstructCall()) { 14386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // ECMA 262 - 15.9.2 14486f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org return (new $Date()).toString(); 14586f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } 14686f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org 14786f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // ECMA 262 - 15.9.3 14886f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org var argc = %_ArgumentsLength(); 14986f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org var value; 15086f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org if (argc == 0) { 15186f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org value = %DateCurrentTime(); 1524efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_UTC_DATE_VALUE(this, value); 15386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } else if (argc == 1) { 15486f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org if (IS_NUMBER(year)) { 1554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org value = year; 15668ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org } else if (IS_STRING(year)) { 15768ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // Probe the Date cache. If we already have a time value for the 15868ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // given time, we re-use that instead of parsing the string again. 15968ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org var cache = Date_cache; 16068ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org if (cache.string === year) { 16168ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org value = cache.time; 16268ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org } else { 16368ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org value = DateParse(year); 164b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org if (!NUMBER_IS_NAN(value)) { 165b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org cache.time = value; 166b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org cache.string = year; 167b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org } 16868ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org } 16968ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org 17086f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } else { 17143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // According to ECMA 262, no hint should be given for this 17286f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // conversion. However, ToPrimitive defaults to STRING_HINT for 17386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // Date objects which will lose precision when the Date 17443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // constructor is called with another Date object as its 17586f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // argument. We therefore use NUMBER_HINT for the conversion, 17686f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // which is the default for everything else than Date objects. 17786f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // This makes us behave like KJS and SpiderMonkey. 17843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = ToPrimitive(year, NUMBER_HINT); 1794efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org value = IS_STRING(time) ? DateParse(time) : ToNumber(time); 18043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 1814efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_UTC_DATE_VALUE(this, value); 18286f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } else { 18343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 18443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 18543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = argc > 2 ? ToNumber(date) : 1; 18643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hours = argc > 3 ? ToNumber(hours) : 0; 18743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen minutes = argc > 4 ? ToNumber(minutes) : 0; 18843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen seconds = argc > 5 ? ToNumber(seconds) : 0; 18943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = argc > 6 ? ToNumber(ms) : 0; 1901b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org year = (!NUMBER_IS_NAN(year) && 1911b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 0 <= TO_INTEGER(year) && 1921b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; 19343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 19443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hours, minutes, seconds, ms); 1954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org value = MakeDate(day, time); 1964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_LOCAL_DATE_VALUE(this, value); 19743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 198e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 19943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 20043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 20143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvar WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 2021b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgvar Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 2031b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 20443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 20543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 20643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction TwoDigitString(value) { 20743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return value < 10 ? "0" + value : "" + value; 20841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 20943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 21043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2114efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction DateString(date) { 2124efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return WeekDays[LOCAL_WEEKDAY(date)] + ' ' 2134efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + Months[LOCAL_MONTH(date)] + ' ' 2144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_DAY(date)) + ' ' 2154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + LOCAL_YEAR(date); 21641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 21743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 21843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2191b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgvar LongWeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 2201b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 'Thursday', 'Friday', 'Saturday']; 2211b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgvar LongMonths = ['January', 'February', 'March', 'April', 'May', 'June', 2221b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 'July', 'August', 'September', 'October', 'November', 'December']; 2239bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2249bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2254efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction LongDateString(date) { 2264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LongWeekDays[LOCAL_WEEKDAY(date)] + ', ' 2274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + LongMonths[LOCAL_MONTH(date)] + ' ' 2284efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_DAY(date)) + ', ' 2294efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + LOCAL_YEAR(date); 2309bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org} 2319bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2329bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction TimeString(date) { 2344efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TwoDigitString(LOCAL_HOUR(date)) + ':' 2354efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_MIN(date)) + ':' 2364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_SEC(date)); 23741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 23843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 23943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2404efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction TimeStringUTC(date) { 2414efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TwoDigitString(UTC_HOUR(date)) + ':' 2424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(UTC_MIN(date)) + ':' 2434efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(UTC_SEC(date)); 2444efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org} 2454efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2464efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2474efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction LocalTimezoneString(date) { 2484efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var timezone = LocalTimezone(UTC_DATE_VALUE(date)); 24925156ded31ef771a2d799ed902483d83b3ebcbdclrn@chromium.org 2504efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var timezoneOffset = -TIMEZONE_OFFSET(date); 25143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var sign = (timezoneOffset >= 0) ? 1 : -1; 2527c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org var hours = FLOOR((sign * timezoneOffset)/60); 2537c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org var min = FLOOR((sign * timezoneOffset)%60); 254b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org var gmt = ' GMT' + ((sign == 1) ? '+' : '-') + 255b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org TwoDigitString(hours) + TwoDigitString(min); 25625156ded31ef771a2d799ed902483d83b3ebcbdclrn@chromium.org return gmt + ' (' + timezone + ')'; 25741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 25843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 25943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2604efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction DatePrintString(date) { 2614efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return DateString(date) + ' ' + TimeString(date); 26241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 26343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 26443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ------------------------------------------------------------------- 26543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 26668ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org// Reused output buffer. Used when parsing date strings. 2674111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.orgvar parse_buffer = $Array(8); 26843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 26943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.4.2 27043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateParse(string) { 271bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org var arr = %DateParseString(ToString(string), parse_buffer); 272690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (IS_NULL(arr)) return NAN; 27343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 27443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(arr[0], arr[1], arr[2]); 2754111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); 27643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var date = MakeDate(day, time); 27741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 2784111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org if (IS_NULL(arr[7])) { 27943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return TimeClip(UTC(date)); 28043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 2814111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org return TimeClip(date - arr[7] * 1000); 28243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 28341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 28443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 28543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 28643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.4.3 28743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateUTC(year, month, date, hours, minutes, seconds, ms) { 28843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 28943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 29043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 29143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = argc > 2 ? ToNumber(date) : 1; 29243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hours = argc > 3 ? ToNumber(hours) : 0; 29343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen minutes = argc > 4 ? ToNumber(minutes) : 0; 29443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen seconds = argc > 5 ? ToNumber(seconds) : 0; 29543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = argc > 6 ? ToNumber(ms) : 0; 2961b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org year = (!NUMBER_IS_NAN(year) && 2971b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 0 <= TO_INTEGER(year) && 2981b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; 29943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 30043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hours, minutes, seconds, ms); 3014efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TimeClip(MakeDate(day, time)); 30241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 30343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 30443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 305c86e8c29eea534916f0d6a2a285b65a86d1b3b67machenbach@chromium.org// ECMA 262 - 15.9.4.4 30643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateNow() { 30731e7138e1a05e29ceefa8919ae12cb621a48ca7fmads.s.ager return %DateCurrentTime(); 30841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 30943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 31043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 31143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.2 31243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToString() { 3134efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this) 3142abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time_zone_string = LocalTimezoneString(this) 3164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return DatePrintString(this) + time_zone_string; 31741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 31843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 31943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 32043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.3 32143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToDateString() { 3224efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3232abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3244efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return DateString(this); 32541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 32643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 32743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 32843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.4 32943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToTimeString() { 3304efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3312abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time_zone_string = LocalTimezoneString(this); 3334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TimeString(this) + time_zone_string; 33441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 33541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 33641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 33741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - 15.9.5.5 33841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateToLocaleString() { 3397a392b3bfb39dbbc1ff22f0b53109aa5763fde57whesse@chromium.org return %_CallFunction(this, DateToString); 34041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 34141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 34241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 34341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - 15.9.5.6 34441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateToLocaleDateString() { 3454efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3462abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3474efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LongDateString(this); 34841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 34943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 351c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// ECMA 262 - 15.9.5.7 352c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgfunction DateToLocaleTimeString() { 3534efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3542abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TimeString(this); 35641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 35741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 35841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 35941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - 15.9.5.8 36041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateValueOf() { 3614efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DATE_VALUE(this); 36241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 363c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 364c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 36543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.9 36643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetTime() { 3674efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DATE_VALUE(this); 36843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 36943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.10 37243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetFullYear() { 3734efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_YEAR(this); 37441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 37543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.11 37843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCFullYear() { 3794efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_YEAR(this); 38041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 38143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.12 38443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetMonth() { 3854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_MONTH(this); 38641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 38743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.13 39043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCMonth() { 3914efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_MONTH(this); 39241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 39343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 39443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 39543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.14 39643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetDate() { 3974efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_DAY(this); 39841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 39943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.15 40243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCDate() { 4034efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DAY(this); 40441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 40543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.16 40843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetDay() { 4094efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_WEEKDAY(this); 41041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 41143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.17 41443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCDay() { 4154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_WEEKDAY(this); 41641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 41743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.18 42043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetHours() { 4214efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_HOUR(this); 42241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 42343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.19 42643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCHours() { 4274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_HOUR(this); 42841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 42943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.20 43243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetMinutes() { 4334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_MIN(this); 43441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 43543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.21 43843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCMinutes() { 4394efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_MIN(this); 44041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 44143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.22 44443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetSeconds() { 4454efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_SEC(this); 44641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 44743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.23 45043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCSeconds() { 4514efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_SEC(this) 45241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 45343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 45443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 45543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.24 45643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetMilliseconds() { 4574efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_MS(this); 45841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 45943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 46043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 46143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.25 46243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCMilliseconds() { 4634efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_MS(this); 46441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 46543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 46643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 46743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.26 46843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetTimezoneOffset() { 4694efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TIMEZONE_OFFSET(this); 47041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 47143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 47243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 47343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.27 47443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetTime(ms) { 4754efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK_DATE(this); 4764efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_UTC_DATE_VALUE(this, ToNumber(ms)); 4774efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DATE_VALUE(this); 47841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 47943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 48043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 48143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.28 48243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetMilliseconds(ms) { 4834efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 48443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = ToNumber(ms); 4854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); 4861456e708d277e725ca42a03463af16fe471c9210jkummerow@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 48741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 48843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 48943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 49043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.29 49143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCMilliseconds(ms) { 4924efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 49343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = ToNumber(ms); 4944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(UTC_HOUR(this), 4954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org UTC_MIN(this), 4964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org UTC_SEC(this), 4971b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org ms); 4984efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 49941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 50043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 50143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 50243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.30 50343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetSeconds(sec, ms) { 5044efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 50543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen sec = ToNumber(sec); 5064efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); 5074efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); 5084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 50941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 51043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 51143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 51243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.31 51343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCSeconds(sec, ms) { 5144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 51543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen sec = ToNumber(sec); 5164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); 5174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); 5184efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 51941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 52043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 52143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 52243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.33 52343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetMinutes(min, sec, ms) { 5244efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 52543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen min = ToNumber(min); 52643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); 5284efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); 5294efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); 5304efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 53141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 53243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 53343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 53443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.34 53543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCMinutes(min, sec, ms) { 5364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 53743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen min = ToNumber(min); 53843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5394efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); 5404efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); 5414efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(UTC_HOUR(this), min, sec, ms); 5424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 54341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 54443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 54543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 54643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.35 54743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetHours(hour, min, sec, ms) { 5484efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 54943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hour = ToNumber(hour); 55043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5514efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); 5524efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); 5534efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); 55443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hour, min, sec, ms); 5554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 55641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 55743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 55843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 55943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.34 56043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCHours(hour, min, sec, ms) { 5614efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 56243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hour = ToNumber(hour); 56343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5644efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org min = argc < 2 ? UTC_MIN(this) : ToNumber(min); 5654efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); 5664efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); 56743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hour, min, sec, ms); 5684efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 56941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 57043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.36 57343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetDate(date) { 5744efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 57543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = ToNumber(date); 5764efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); 5774efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 57841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 57943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 58043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 58143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.37 58243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCDate(date) { 5834efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 58443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = ToNumber(date); 5854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); 5864efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 58741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 58843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 58943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 59043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.38 59143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetMonth(month, date) { 5924efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 59343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 5944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); 5954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(LOCAL_YEAR(this), month, date); 5964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 59741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 59843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 59943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 60043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.39 60143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCMonth(month, date) { 6024efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 60343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 6044efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); 6054efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(UTC_YEAR(this), month, date); 6064efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 60741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 60843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 60943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.40 61143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetFullYear(year, month, date) { 6124efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 61343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 61443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 6154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time ; 6164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (NUMBER_IS_NAN(t)) { 6174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? 0 : ToNumber(month); 6184efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? 1 : ToNumber(date); 6194efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = 0; 6204efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } else { 6214efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); 6224efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); 6234efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = LOCAL_TIME_IN_DAY(this); 6244efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 62543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 6264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); 62741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 62843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 62943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 63043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.41 63143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCFullYear(year, month, date) { 6324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 63343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 6344efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var argc = %_ArgumentsLength(); 6354efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time ; 6364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (NUMBER_IS_NAN(t)) { 6374efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? 0 : ToNumber(month); 6384efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? 1 : ToNumber(date); 6394efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = 0; 6404efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } else { 6414efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); 6424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? UTC_DAY(this) : ToNumber(date); 6434efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = UTC_TIME_IN_DAY(this); 6444efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 64543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 6464efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); 64741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 64843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 65043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.42 65143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToUTCString() { 6524efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 6532abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 65443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT 6554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return WeekDays[UTC_WEEKDAY(this)] + ', ' 6564efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(UTC_DAY(this)) + ' ' 6574efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + Months[UTC_MONTH(this)] + ' ' 6584efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + UTC_YEAR(this) + ' ' 6594efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TimeStringUTC(this) + ' GMT'; 66041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 66143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 66243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 66343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - B.2.4 66443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetYear() { 6654efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_YEAR(this) - 1900; 66641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 66743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 66843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 66943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - B.2.5 67043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetYear(year) { 6714efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK_DATE(this); 67243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 673690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); 67443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) 67543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ? 1900 + TO_INTEGER(year) : year; 6764efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 6774efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var month, date, time; 6784efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (NUMBER_IS_NAN(t)) { 6794efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = 0; 6804efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = 1; 6814efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = 0; 6824efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } else { 6834efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = LOCAL_MONTH(this); 6844efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = LOCAL_DAY(this); 6854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = LOCAL_TIME_IN_DAY(this); 6864efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 6874efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(year, month, date); 6884efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); 68941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 69041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 69141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 69241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - B.2.6 69341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// 69441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// Notice that this does not follow ECMA 262 completely. ECMA 262 69541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// says that toGMTString should be the same Function object as 69641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// toUTCString. JSC does not do this, so for compatibility we do not 69741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// do that either. Instead, we create a new function whose name 69841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// property will return toGMTString. 69941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateToGMTString() { 7007a392b3bfb39dbbc1ff22f0b53109aa5763fde57whesse@chromium.org return %_CallFunction(this, DateToUTCString); 70141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 70243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 70343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7040c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.orgfunction PadInt(n, digits) { 7050c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org if (digits == 1) return n; 7060c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n; 7073a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org} 7083a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7093a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 710c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org// ECMA 262 - 15.9.5.43 7113a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.orgfunction DateToISOString() { 7124efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 713c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org if (NUMBER_IS_NAN(t)) throw MakeRangeError("invalid_time_value", []); 7144f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org var year = this.getUTCFullYear(); 7154f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org var year_string; 7164f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org if (year >= 0 && year <= 9999) { 7174f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org year_string = PadInt(year, 4); 7184f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } else { 7194f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org if (year < 0) { 7204f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org year_string = "-" + PadInt(-year, 6); 7214f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } else { 7224f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org year_string = "+" + PadInt(year, 6); 7234f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } 7244f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } 7254f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org return year_string + 7265f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org '-' + PadInt(this.getUTCMonth() + 1, 2) + 7274f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org '-' + PadInt(this.getUTCDate(), 2) + 7285f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org 'T' + PadInt(this.getUTCHours(), 2) + 7294f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org ':' + PadInt(this.getUTCMinutes(), 2) + 7305f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org ':' + PadInt(this.getUTCSeconds(), 2) + 7310c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org '.' + PadInt(this.getUTCMilliseconds(), 3) + 7323a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 'Z'; 7333a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org} 7343a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7353a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7363a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.orgfunction DateToJSON(key) { 7375f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org var o = ToObject(this); 7385f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org var tv = DefaultNumber(o); 7394f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) { 7404f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org return null; 7415f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org } 7425f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org return o.toISOString(); 7433a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org} 7443a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7453a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 746023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.orgfunction ResetDateCache() { 747023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org // Reset the timezone cache: 748690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org timezone_cache_time = NAN; 749023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org timezone_cache_timezone = undefined; 750023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 751023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org // Reset the date cache: 752023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org cache = Date_cache; 753690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org cache.time = NAN; 754023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org cache.string = null; 755023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org} 756023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 757023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 75843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ------------------------------------------------------------------- 75943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7601805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgfunction SetUpDate() { 7611805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org %CheckIsBootstrapping(); 762e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 763e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org %SetCode($Date, DateConstructor); 764690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org %FunctionSetPrototype($Date, new $Date(NAN)); 765e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 7661805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org // Set up non-enumerable properties of the Date object itself. 76741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org InstallFunctions($Date, DONT_ENUM, $Array( 76841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "UTC", DateUTC, 76941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "parse", DateParse, 77041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "now", DateNow 77141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org )); 77241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 7731805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org // Set up non-enumerable constructor property of the Date prototype object. 77441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org %SetProperty($Date.prototype, "constructor", $Date, DONT_ENUM); 77541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 7761805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org // Set up non-enumerable functions of the Date prototype object and 77741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org // set their names. 77827bf28851c1fa362a3f7c709871c21dcc9c23ce7ricow@chromium.org InstallFunctions($Date.prototype, DONT_ENUM, $Array( 77941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toString", DateToString, 78041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toDateString", DateToDateString, 78141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toTimeString", DateToTimeString, 78241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toLocaleString", DateToLocaleString, 78341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toLocaleDateString", DateToLocaleDateString, 78441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toLocaleTimeString", DateToLocaleTimeString, 78541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "valueOf", DateValueOf, 78641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getTime", DateGetTime, 78741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getFullYear", DateGetFullYear, 78841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCFullYear", DateGetUTCFullYear, 78941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getMonth", DateGetMonth, 79041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCMonth", DateGetUTCMonth, 79141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getDate", DateGetDate, 79241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCDate", DateGetUTCDate, 79341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getDay", DateGetDay, 79441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCDay", DateGetUTCDay, 79541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getHours", DateGetHours, 79641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCHours", DateGetUTCHours, 79741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getMinutes", DateGetMinutes, 79841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCMinutes", DateGetUTCMinutes, 79941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getSeconds", DateGetSeconds, 80041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCSeconds", DateGetUTCSeconds, 80141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getMilliseconds", DateGetMilliseconds, 80241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCMilliseconds", DateGetUTCMilliseconds, 80341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getTimezoneOffset", DateGetTimezoneOffset, 80441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setTime", DateSetTime, 80541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setMilliseconds", DateSetMilliseconds, 80641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCMilliseconds", DateSetUTCMilliseconds, 80741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setSeconds", DateSetSeconds, 80841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCSeconds", DateSetUTCSeconds, 80941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setMinutes", DateSetMinutes, 81041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCMinutes", DateSetUTCMinutes, 81141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setHours", DateSetHours, 81241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCHours", DateSetUTCHours, 81341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setDate", DateSetDate, 81441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCDate", DateSetUTCDate, 81541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setMonth", DateSetMonth, 81641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCMonth", DateSetUTCMonth, 81741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setFullYear", DateSetFullYear, 81841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCFullYear", DateSetUTCFullYear, 81941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toGMTString", DateToGMTString, 82041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toUTCString", DateToUTCString, 82141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getYear", DateGetYear, 8223a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org "setYear", DateSetYear, 8233a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org "toISOString", DateToISOString, 8243a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org "toJSON", DateToJSON 82541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org )); 82641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 82743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8281805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgSetUpDate(); 829