19258b6bc66e09368ada54001f619d53b4fc976d5ager@chromium.org// Copyright 2006-2008 the V8 project authors. All rights reserved. 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file. 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5a3b66334e4dd35d9d4874d275ef9c4a756f0225cmachenbach@chromium.org"use strict"; 6a3b66334e4dd35d9d4874d275ef9c4a756f0225cmachenbach@chromium.org 741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// This file relies on the fact that the following declarations have been made 841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// in v8natives.js: 9f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org// var $isFinite = GlobalIsFinite; 1041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 11e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgvar $Date = global.Date; 12e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ------------------------------------------------------------------- 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// This file contains date support implemented in JavaScript. 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 172abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org// Helper function to throw error. 182abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.orgfunction ThrowDateTypeError() { 192abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org throw new $TypeError('this is not a Date object.'); 202abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org} 212abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 23690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.orgvar timezone_cache_time = NAN; 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvar timezone_cache_timezone; 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 26397734cdd4d321a7fd57a0cf1c99d40bbf354ba3dslomov@chromium.orgfunction LocalTimezone(t) { 27b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org if (NUMBER_IS_NAN(t)) return ""; 28486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org CheckDateCacheCurrent(); 29397734cdd4d321a7fd57a0cf1c99d40bbf354ba3dslomov@chromium.org if (t == timezone_cache_time) { 3043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return timezone_cache_timezone; 3143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var timezone = %DateLocalTimezone(t); 3343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen timezone_cache_time = t; 3443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen timezone_cache_timezone = timezone; 3543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return timezone; 3641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 3743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 3943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction UTC(time) { 402abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(time)) return time; 41421a0f4d7b8d61d313e8bcc630f34f942d7c811ewhesse@chromium.org // local_time_offset is needed before the call to DaylightSavingsOffset, 42421a0f4d7b8d61d313e8bcc630f34f942d7c811ewhesse@chromium.org // so it may be uninitialized. 434efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return %DateToUTC(time); 4441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 4543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 4743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.11 4843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction MakeTime(hour, min, sec, ms) { 49690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(hour)) return NAN; 50690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(min)) return NAN; 51690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(sec)) return NAN; 52690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(ms)) return NAN; 5343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return TO_INTEGER(hour) * msPerHour 5443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen + TO_INTEGER(min) * msPerMinute 5543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen + TO_INTEGER(sec) * msPerSecond 5643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen + TO_INTEGER(ms); 5741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 5843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 5943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.12 6143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction TimeInYear(year) { 6243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return DaysInYear(year) * msPerDay; 6341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 6443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Compute number of days given a year, month, date. 6743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Note that month and date can lie outside the normal range. 6843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// For example: 6943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// MakeDay(2007, -4, 20) --> MakeDay(2006, 8, 20) 7043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// MakeDay(2007, -33, 1) --> MakeDay(2004, 3, 1) 7143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// MakeDay(2007, 14, -50) --> MakeDay(2007, 8, 11) 7243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction MakeDay(year, month, date) { 73690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) return NAN; 7443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7569ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org // Convert to integer and map -0 to 0. 7669ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org year = TO_INTEGER_MAP_MINUS_ZERO(year); 7769ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org month = TO_INTEGER_MAP_MINUS_ZERO(month); 7869ea3965ef6e0d3f020a402cf7e6b96b9cb651aekmillikin@chromium.org date = TO_INTEGER_MAP_MINUS_ZERO(date); 7943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 80ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.org if (year < kMinYear || year > kMaxYear || 81c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org month < kMinMonth || month > kMaxMonth) { 82690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org return NAN; 8343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 8443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 85c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org // Now we rely on year and month being SMIs. 86fb37721ea34922d8758d5cb26ae465aaf241e6b6yangguo@chromium.org return %DateMakeDay(year | 0, month | 0) + date - 1; 8741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 8843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 9043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.13 9143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction MakeDate(day, time) { 925f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org var time = day * msPerDay + time; 935f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // Some of our runtime funtions for computing UTC(time) rely on 945f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // times not being significantly larger than MAX_TIME_MS. If there 955f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // is no way that the time can be within range even after UTC 965f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // conversion we return NaN immediately instead of relying on 975f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org // TimeClip to do it. 98690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if ($abs(time) > MAX_TIME_BEFORE_UTC) return NAN; 995f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org return time; 10041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 10143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 10243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 10343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.1.14 10443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction TimeClip(time) { 105690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (!$isFinite(time)) return NAN; 106690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if ($abs(time) > MAX_TIME_MS) return NAN; 10743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return TO_INTEGER(time); 10841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 10943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 11043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 11168ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org// The Date cache is used to limit the cost of parsing the same Date 11268ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org// strings over and over again. 11368ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.orgvar Date_cache = { 11468ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // Cached time value. 115113035e2f19feb7032fbe57b2e3e376f1dfc4110jkummerow@chromium.org time: 0, 11668ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // String input for which the cached time is valid. 11768ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org string: null 11868ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org}; 11968ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org 12068ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org 121e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgfunction DateConstructor(year, month, date, hours, minutes, seconds, ms) { 12286f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org if (!%_IsConstructCall()) { 12386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // ECMA 262 - 15.9.2 12486f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org return (new $Date()).toString(); 12586f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } 12686f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org 12786f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // ECMA 262 - 15.9.3 12886f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org var argc = %_ArgumentsLength(); 12986f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org var value; 13086f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org if (argc == 0) { 13186f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org value = %DateCurrentTime(); 1324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_UTC_DATE_VALUE(this, value); 13386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } else if (argc == 1) { 13486f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org if (IS_NUMBER(year)) { 1354efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org value = year; 13668ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org } else if (IS_STRING(year)) { 13768ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // Probe the Date cache. If we already have a time value for the 13868ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org // given time, we re-use that instead of parsing the string again. 139486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org CheckDateCacheCurrent(); 14068ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org var cache = Date_cache; 14168ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org if (cache.string === year) { 14268ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org value = cache.time; 14368ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org } else { 14468ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org value = DateParse(year); 145b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org if (!NUMBER_IS_NAN(value)) { 146b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org cache.time = value; 147b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org cache.string = year; 148b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org } 14968ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org } 15068ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org 15186f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } else { 15243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // According to ECMA 262, no hint should be given for this 15386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // conversion. However, ToPrimitive defaults to STRING_HINT for 15486f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // Date objects which will lose precision when the Date 15543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // constructor is called with another Date object as its 15686f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // argument. We therefore use NUMBER_HINT for the conversion, 15786f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // which is the default for everything else than Date objects. 15886f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org // This makes us behave like KJS and SpiderMonkey. 15943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = ToPrimitive(year, NUMBER_HINT); 1604efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org value = IS_STRING(time) ? DateParse(time) : ToNumber(time); 16143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 1624efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_UTC_DATE_VALUE(this, value); 16386f77b7fe492ed2bdfbf4e1147dab2f09c7d7003kasperl@chromium.org } else { 16443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 16543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 16643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = argc > 2 ? ToNumber(date) : 1; 16743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hours = argc > 3 ? ToNumber(hours) : 0; 16843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen minutes = argc > 4 ? ToNumber(minutes) : 0; 16943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen seconds = argc > 5 ? ToNumber(seconds) : 0; 17043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = argc > 6 ? ToNumber(ms) : 0; 1711b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org year = (!NUMBER_IS_NAN(year) && 1721b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 0 <= TO_INTEGER(year) && 1731b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; 17443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 17543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hours, minutes, seconds, ms); 1764efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org value = MakeDate(day, time); 1774efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_LOCAL_DATE_VALUE(this, value); 17843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 179e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 18043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 18143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 18243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvar WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 1831b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgvar Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 1841b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 18543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 18643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 18743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction TwoDigitString(value) { 18843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return value < 10 ? "0" + value : "" + value; 18941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 19043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 19143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 1924efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction DateString(date) { 1934efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return WeekDays[LOCAL_WEEKDAY(date)] + ' ' 1944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + Months[LOCAL_MONTH(date)] + ' ' 1954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_DAY(date)) + ' ' 1964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + LOCAL_YEAR(date); 19741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 19843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 19943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2001b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgvar LongWeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 2011b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 'Thursday', 'Friday', 'Saturday']; 2021b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.orgvar LongMonths = ['January', 'February', 'March', 'April', 'May', 'June', 2031b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 'July', 'August', 'September', 'October', 'November', 'December']; 2049bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2059bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2064efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction LongDateString(date) { 2074efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LongWeekDays[LOCAL_WEEKDAY(date)] + ', ' 2084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + LongMonths[LOCAL_MONTH(date)] + ' ' 2094efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_DAY(date)) + ', ' 2104efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + LOCAL_YEAR(date); 2119bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org} 2129bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2139bbf968a649030335309265ba2c98fcc36aeb762kasperl@chromium.org 2144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction TimeString(date) { 2154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TwoDigitString(LOCAL_HOUR(date)) + ':' 2164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_MIN(date)) + ':' 2174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(LOCAL_SEC(date)); 21841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 21943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 22043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2214efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction TimeStringUTC(date) { 2224efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TwoDigitString(UTC_HOUR(date)) + ':' 2234efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(UTC_MIN(date)) + ':' 2244efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(UTC_SEC(date)); 2254efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org} 2264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org 2284efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction LocalTimezoneString(date) { 229397734cdd4d321a7fd57a0cf1c99d40bbf354ba3dslomov@chromium.org var timezone = LocalTimezone(UTC_DATE_VALUE(date)); 230397734cdd4d321a7fd57a0cf1c99d40bbf354ba3dslomov@chromium.org 2314efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var timezoneOffset = -TIMEZONE_OFFSET(date); 23243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var sign = (timezoneOffset >= 0) ? 1 : -1; 2337c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org var hours = FLOOR((sign * timezoneOffset)/60); 2347c537e2abe09729ed6cb827b4dd206470d8c4a42ager@chromium.org var min = FLOOR((sign * timezoneOffset)%60); 235b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org var gmt = ' GMT' + ((sign == 1) ? '+' : '-') + 236b9d7da12d4486aa0a9d6660de46d977198076e77sgjesse@chromium.org TwoDigitString(hours) + TwoDigitString(min); 23725156ded31ef771a2d799ed902483d83b3ebcbdclrn@chromium.org return gmt + ' (' + timezone + ')'; 23841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 23943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 24043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2414efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.orgfunction DatePrintString(date) { 2424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return DateString(date) + ' ' + TimeString(date); 24341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 24443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 24543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ------------------------------------------------------------------- 24643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 24768ac009f55a85e6891742d58914eaf717f667b26kasperl@chromium.org// Reused output buffer. Used when parsing date strings. 2484111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.orgvar parse_buffer = $Array(8); 24943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 25043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.4.2 25143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateParse(string) { 252bb29dc9819bb6f495ab6eddd2543965eb97a8e43ager@chromium.org var arr = %DateParseString(ToString(string), parse_buffer); 253690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (IS_NULL(arr)) return NAN; 25443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 25543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(arr[0], arr[1], arr[2]); 2564111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); 25743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var date = MakeDate(day, time); 25841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 2594111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org if (IS_NULL(arr[7])) { 26043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return TimeClip(UTC(date)); 26143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } else { 2624111b80e5083e1ec54273d3275875ccc24cdbbafkmillikin@chromium.org return TimeClip(date - arr[7] * 1000); 26343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 26441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 26543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 26643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 26743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.4.3 26843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateUTC(year, month, date, hours, minutes, seconds, ms) { 26943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 27043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 27143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 27243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = argc > 2 ? ToNumber(date) : 1; 27343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hours = argc > 3 ? ToNumber(hours) : 0; 27443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen minutes = argc > 4 ? ToNumber(minutes) : 0; 27543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen seconds = argc > 5 ? ToNumber(seconds) : 0; 27643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = argc > 6 ? ToNumber(ms) : 0; 2771b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org year = (!NUMBER_IS_NAN(year) && 2781b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org 0 <= TO_INTEGER(year) && 2791b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; 28043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 28143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hours, minutes, seconds, ms); 2824efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TimeClip(MakeDate(day, time)); 28341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 28443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 28543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 286c86e8c29eea534916f0d6a2a285b65a86d1b3b67machenbach@chromium.org// ECMA 262 - 15.9.4.4 28743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateNow() { 28831e7138e1a05e29ceefa8919ae12cb621a48ca7fmads.s.ager return %DateCurrentTime(); 28941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 29043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 29143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 29243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.2 29343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToString() { 2944efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this) 2952abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 2964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time_zone_string = LocalTimezoneString(this) 2974efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return DatePrintString(this) + time_zone_string; 29841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 29943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 30043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 30143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.3 30243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToDateString() { 3034efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3042abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3054efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return DateString(this); 30641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 30743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 30843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 30943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.4 31043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToTimeString() { 3114efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3122abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3134efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time_zone_string = LocalTimezoneString(this); 3144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TimeString(this) + time_zone_string; 31541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 31641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 31741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 31841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - 15.9.5.5 31941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateToLocaleString() { 3207a392b3bfb39dbbc1ff22f0b53109aa5763fde57whesse@chromium.org return %_CallFunction(this, DateToString); 32141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 32241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 32341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 32441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - 15.9.5.6 32541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateToLocaleDateString() { 3264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3272abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3284efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LongDateString(this); 32941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 33043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 33143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 332c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org// ECMA 262 - 15.9.5.7 333c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.orgfunction DateToLocaleTimeString() { 3344efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 3352abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 3364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TimeString(this); 33741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 33841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 33941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 34041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - 15.9.5.8 34141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateValueOf() { 3424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DATE_VALUE(this); 34341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 344c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 345c27e4e79503d86932450a812ce8fd6ee6d9a5bdcager@chromium.org 34643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.9 34743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetTime() { 3484efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DATE_VALUE(this); 34943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 35043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.10 35343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetFullYear() { 3544efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_YEAR(this); 35541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 35643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 35843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.11 35943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCFullYear() { 3604efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_YEAR(this); 36141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 36243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 36343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 36443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.12 36543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetMonth() { 3664efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_MONTH(this); 36741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 36843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 36943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.13 37143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCMonth() { 3724efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_MONTH(this); 37341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 37443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 37643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.14 37743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetDate() { 3784efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_DAY(this); 37941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 38043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.15 38343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCDate() { 3844efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DAY(this); 38541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 38643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 38843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.16 38943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetDay() { 3904efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_WEEKDAY(this); 39141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 39243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 39343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 39443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.17 39543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCDay() { 3964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_WEEKDAY(this); 39741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 39843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 39943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.18 40143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetHours() { 4024efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_HOUR(this); 40341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 40443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 40643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.19 40743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCHours() { 4084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_HOUR(this); 40941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 41043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.20 41343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetMinutes() { 4144efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_MIN(this); 41541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 41643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 41843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.21 41943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCMinutes() { 4204efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_MIN(this); 42141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 42243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.22 42543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetSeconds() { 4264efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_SEC(this); 42741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 42843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 42943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.23 43143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCSeconds() { 4324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_SEC(this) 43341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 43443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 43643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.24 43743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetMilliseconds() { 4384efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_MS(this); 43941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 44043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.25 44343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetUTCMilliseconds() { 4444efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_MS(this); 44541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 44643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 44843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.26 44943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetTimezoneOffset() { 4504efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return TIMEZONE_OFFSET(this); 45141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 45243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 45343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 45443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.27 45543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetTime(ms) { 4564efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK_DATE(this); 4574efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org SET_UTC_DATE_VALUE(this, ToNumber(ms)); 4584efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return UTC_DATE_VALUE(this); 45941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 46043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 46143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 46243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.28 46343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetMilliseconds(ms) { 4644efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 46543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = ToNumber(ms); 4664efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); 4671456e708d277e725ca42a03463af16fe471c9210jkummerow@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 46841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 46943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 47043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 47143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.29 47243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCMilliseconds(ms) { 4734efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 47443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ms = ToNumber(ms); 4754efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(UTC_HOUR(this), 4764efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org UTC_MIN(this), 4774efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org UTC_SEC(this), 4781b3afd1cab9087ca3c4e585d3da77d374d65c082mstarzinger@chromium.org ms); 4794efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 48041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 48143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 48243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 48343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.30 48443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetSeconds(sec, ms) { 4854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 48643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen sec = ToNumber(sec); 4874efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); 4884efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); 4894efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 49041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 49143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 49243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 49343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.31 49443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCSeconds(sec, ms) { 4954efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 49643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen sec = ToNumber(sec); 4974efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); 4984efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); 4994efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 50041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 50143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 50243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 50343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.33 50443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetMinutes(min, sec, ms) { 5054efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 50643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen min = ToNumber(min); 50743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5084efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); 5094efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); 5104efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); 5114efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 51241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 51343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 51443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 51543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.34 51643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCMinutes(min, sec, ms) { 5174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 51843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen min = ToNumber(min); 51943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5204efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); 5214efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); 5224efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time = MakeTime(UTC_HOUR(this), min, sec, ms); 5234efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 52441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 52543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 52643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 52743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.35 52843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetHours(hour, min, sec, ms) { 5294efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 53043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hour = ToNumber(hour); 53143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5324efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); 5334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); 5344efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); 53543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hour, min, sec, ms); 5364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 53741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 53843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 53943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 54043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.34 54143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCHours(hour, min, sec, ms) { 5424efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 54343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen hour = ToNumber(hour); 54443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5454efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org min = argc < 2 ? UTC_MIN(this) : ToNumber(min); 5464efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); 5474efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); 54843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var time = MakeTime(hour, min, sec, ms); 5494efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 55041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 55143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 55243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 55343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.36 55443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetDate(date) { 5554efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 55643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = ToNumber(date); 5574efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); 5584efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 55941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 56043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 56143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 56243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.37 56343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCDate(date) { 5644efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 56543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen date = ToNumber(date); 5664efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); 5674efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 56841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 56943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 57143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.38 57243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetMonth(month, date) { 5734efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 57443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 5754efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); 5764efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(LOCAL_YEAR(this), month, 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.39 58243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCMonth(month, date) { 5834efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 58443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen month = ToNumber(month); 5854efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); 5864efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(UTC_YEAR(this), month, date); 5874efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 58841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 58943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 59043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 59143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.40 59243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetFullYear(year, month, date) { 5934efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 59443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 59543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var argc = %_ArgumentsLength(); 5964efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time ; 5974efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (NUMBER_IS_NAN(t)) { 5984efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? 0 : ToNumber(month); 5994efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? 1 : ToNumber(date); 6004efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = 0; 6014efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } else { 6024efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); 6034efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); 6044efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = LOCAL_TIME_IN_DAY(this); 6054efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 60643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 6074efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); 60841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 60943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 61143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.41 61243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetUTCFullYear(year, month, date) { 6134efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 61443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 6154efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var argc = %_ArgumentsLength(); 6164efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var time ; 6174efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (NUMBER_IS_NAN(t)) { 6184efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? 0 : ToNumber(month); 6194efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? 1 : ToNumber(date); 6204efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = 0; 6214efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } else { 6224efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); 6234efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = argc < 3 ? UTC_DAY(this) : ToNumber(date); 6244efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = UTC_TIME_IN_DAY(this); 6254efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 62643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen var day = MakeDay(year, month, date); 6274efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); 62841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 62943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 63043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 63143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - 15.9.5.42 63243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateToUTCString() { 6334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 6342abc450936e88b5c98a5e9d43ee6230ccc748272kasperl@chromium.org if (NUMBER_IS_NAN(t)) return kInvalidDate; 63543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT 6364efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return WeekDays[UTC_WEEKDAY(this)] + ', ' 6374efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TwoDigitString(UTC_DAY(this)) + ' ' 6384efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + Months[UTC_MONTH(this)] + ' ' 6394efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + UTC_YEAR(this) + ' ' 6404efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org + TimeStringUTC(this) + ' GMT'; 64141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 64243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - B.2.4 64543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateGetYear() { 6464efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return LOCAL_YEAR(this) - 1900; 64741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 64843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 64943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 65043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ECMA 262 - B.2.5 65143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenfunction DateSetYear(year) { 6524efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org CHECK_DATE(this); 65343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = ToNumber(year); 654690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); 65543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) 65643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ? 1900 + TO_INTEGER(year) : year; 6574efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = LOCAL_DATE_VALUE(this); 6584efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var month, date, time; 6594efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org if (NUMBER_IS_NAN(t)) { 6604efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = 0; 6614efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = 1; 6624efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = 0; 6634efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } else { 6644efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org month = LOCAL_MONTH(this); 6654efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org date = LOCAL_DAY(this); 6664efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org time = LOCAL_TIME_IN_DAY(this); 6674efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org } 6684efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var day = MakeDay(year, month, date); 6694efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); 67041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 67141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 67241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 67341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// ECMA 262 - B.2.6 67441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// 67541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// Notice that this does not follow ECMA 262 completely. ECMA 262 67641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// says that toGMTString should be the same Function object as 67741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// toUTCString. JSC does not do this, so for compatibility we do not 67841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// do that either. Instead, we create a new function whose name 67941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org// property will return toGMTString. 68041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.orgfunction DateToGMTString() { 6817a392b3bfb39dbbc1ff22f0b53109aa5763fde57whesse@chromium.org return %_CallFunction(this, DateToUTCString); 68241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 68343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 68443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 6850c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.orgfunction PadInt(n, digits) { 6860c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org if (digits == 1) return n; 6870c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n; 6883a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org} 6893a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 6903a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 691c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org// ECMA 262 - 15.9.5.43 6923a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.orgfunction DateToISOString() { 6934efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org var t = UTC_DATE_VALUE(this); 694c3b37129d6387b2db313f9100256d2d5f60dd9a8jkummerow@chromium.org if (NUMBER_IS_NAN(t)) throw MakeRangeError("invalid_time_value", []); 6954f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org var year = this.getUTCFullYear(); 6964f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org var year_string; 6974f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org if (year >= 0 && year <= 9999) { 6984f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org year_string = PadInt(year, 4); 6994f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } else { 7004f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org if (year < 0) { 7014f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org year_string = "-" + PadInt(-year, 6); 7024f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } else { 7034f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org year_string = "+" + PadInt(year, 6); 7044f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } 7054f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org } 7064f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org return year_string + 7075f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org '-' + PadInt(this.getUTCMonth() + 1, 2) + 7084f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org '-' + PadInt(this.getUTCDate(), 2) + 7095f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org 'T' + PadInt(this.getUTCHours(), 2) + 7104f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org ':' + PadInt(this.getUTCMinutes(), 2) + 7115f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org ':' + PadInt(this.getUTCSeconds(), 2) + 7120c20e676f8a0209982ff89e5a9c707771748a585fschneider@chromium.org '.' + PadInt(this.getUTCMilliseconds(), 3) + 7133a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 'Z'; 7143a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org} 7153a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7163a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7173a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.orgfunction DateToJSON(key) { 7185f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org var o = ToObject(this); 7195f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org var tv = DefaultNumber(o); 7204f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) { 7214f693d6b99ffdbc05e5e211e08ed5039e13279d2ricow@chromium.org return null; 7225f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org } 7235f0c45f2cacb31d36a8f80c31f17bda7751a3644ager@chromium.org return o.toISOString(); 7243a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org} 7253a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 7263a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org 727486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.orgvar date_cache_version_holder; 728486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.orgvar date_cache_version = NAN; 729486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org 730486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org 731486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.orgfunction CheckDateCacheCurrent() { 732486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org if (!date_cache_version_holder) { 733486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org date_cache_version_holder = %DateCacheVersion(); 734486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org } 735486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org if (date_cache_version_holder[0] == date_cache_version) { 736486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org return; 737486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org } 738486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org date_cache_version = date_cache_version_holder[0]; 739486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org 740023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org // Reset the timezone cache: 741690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org timezone_cache_time = NAN; 742486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org timezone_cache_timezone = UNDEFINED; 743023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 744023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org // Reset the date cache: 7452904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org Date_cache.time = NAN; 7462904d1a42292be3056c2dd3f98822f8e1470fa72machenbach@chromium.org Date_cache.string = null; 747023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org} 748023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 749023421e6892b2ba6dcd2bbee117e0bfb24545cf7whesse@chromium.org 75043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// ------------------------------------------------------------------- 75143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7521805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgfunction SetUpDate() { 7531805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org %CheckIsBootstrapping(); 754e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 755e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org %SetCode($Date, DateConstructor); 756690083842e7c67a362017dae50909d4bb0b2a9c2mstarzinger@chromium.org %FunctionSetPrototype($Date, new $Date(NAN)); 757e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 7581805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org // Set up non-enumerable properties of the Date object itself. 75941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org InstallFunctions($Date, DONT_ENUM, $Array( 76041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "UTC", DateUTC, 76141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "parse", DateParse, 76241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "now", DateNow 76341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org )); 76441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 7651805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org // Set up non-enumerable constructor property of the Date prototype object. 76641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org %SetProperty($Date.prototype, "constructor", $Date, DONT_ENUM); 76741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org 7681805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.org // Set up non-enumerable functions of the Date prototype object and 76941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org // set their names. 77027bf28851c1fa362a3f7c709871c21dcc9c23ce7ricow@chromium.org InstallFunctions($Date.prototype, DONT_ENUM, $Array( 77141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toString", DateToString, 77241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toDateString", DateToDateString, 77341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toTimeString", DateToTimeString, 77441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toLocaleString", DateToLocaleString, 77541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toLocaleDateString", DateToLocaleDateString, 77641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toLocaleTimeString", DateToLocaleTimeString, 77741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "valueOf", DateValueOf, 77841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getTime", DateGetTime, 77941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getFullYear", DateGetFullYear, 78041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCFullYear", DateGetUTCFullYear, 78141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getMonth", DateGetMonth, 78241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCMonth", DateGetUTCMonth, 78341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getDate", DateGetDate, 78441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCDate", DateGetUTCDate, 78541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getDay", DateGetDay, 78641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCDay", DateGetUTCDay, 78741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getHours", DateGetHours, 78841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCHours", DateGetUTCHours, 78941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getMinutes", DateGetMinutes, 79041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCMinutes", DateGetUTCMinutes, 79141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getSeconds", DateGetSeconds, 79241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCSeconds", DateGetUTCSeconds, 79341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getMilliseconds", DateGetMilliseconds, 79441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getUTCMilliseconds", DateGetUTCMilliseconds, 79541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getTimezoneOffset", DateGetTimezoneOffset, 79641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setTime", DateSetTime, 79741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setMilliseconds", DateSetMilliseconds, 79841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCMilliseconds", DateSetUTCMilliseconds, 79941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setSeconds", DateSetSeconds, 80041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCSeconds", DateSetUTCSeconds, 80141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setMinutes", DateSetMinutes, 80241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCMinutes", DateSetUTCMinutes, 80341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setHours", DateSetHours, 80441044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCHours", DateSetUTCHours, 80541044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setDate", DateSetDate, 80641044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCDate", DateSetUTCDate, 80741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setMonth", DateSetMonth, 80841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCMonth", DateSetUTCMonth, 80941044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setFullYear", DateSetFullYear, 81041044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "setUTCFullYear", DateSetUTCFullYear, 81141044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toGMTString", DateToGMTString, 81241044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "toUTCString", DateToUTCString, 81341044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org "getYear", DateGetYear, 8143a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org "setYear", DateSetYear, 8153a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org "toISOString", DateToISOString, 8163a37e9b96c768f6b5b6b09542e1cb1a1ece7a022ager@chromium.org "toJSON", DateToJSON 81741044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org )); 81841044eb0969b0d7d5c041a077519a36efa6aff27kasperl@chromium.org} 81943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 8201805e21b0aece8c05f4960a5c0751c4463557891fschneider@chromium.orgSetUpDate(); 821