| Index: src/date.js
|
| diff --git a/src/date.js b/src/date.js
|
| index 3d494a136466dcf974cea107bf6b92ff82dda9c7..dbf494788413f60cb4c321b57c6c6672d3e3ea49 100644
|
| --- a/src/date.js
|
| +++ b/src/date.js
|
| @@ -202,6 +202,7 @@ function TwoDigitString(value) {
|
|
|
|
|
| function DateString(date) {
|
| + CHECK_DATE(date);
|
| return WeekDays[LOCAL_WEEKDAY(date)] + ' '
|
| + Months[LOCAL_MONTH(date)] + ' '
|
| + TwoDigitString(LOCAL_DAY(date)) + ' '
|
| @@ -216,6 +217,7 @@ var LongMonths = ['January', 'February', 'March', 'April', 'May', 'June',
|
|
|
|
|
| function LongDateString(date) {
|
| + CHECK_DATE(date);
|
| return LongWeekDays[LOCAL_WEEKDAY(date)] + ', '
|
| + LongMonths[LOCAL_MONTH(date)] + ' '
|
| + TwoDigitString(LOCAL_DAY(date)) + ', '
|
| @@ -224,6 +226,7 @@ function LongDateString(date) {
|
|
|
|
|
| function TimeString(date) {
|
| + CHECK_DATE(date);
|
| return TwoDigitString(LOCAL_HOUR(date)) + ':'
|
| + TwoDigitString(LOCAL_MIN(date)) + ':'
|
| + TwoDigitString(LOCAL_SEC(date));
|
| @@ -231,6 +234,7 @@ function TimeString(date) {
|
|
|
|
|
| function TimeStringUTC(date) {
|
| + CHECK_DATE(date);
|
| return TwoDigitString(UTC_HOUR(date)) + ':'
|
| + TwoDigitString(UTC_MIN(date)) + ':'
|
| + TwoDigitString(UTC_SEC(date));
|
| @@ -238,6 +242,7 @@ function TimeStringUTC(date) {
|
|
|
|
|
| function LocalTimezoneString(date) {
|
| + CHECK_DATE(date);
|
| var timezone = LocalTimezone(UTC_DATE_VALUE(date));
|
|
|
| var timezoneOffset = -TIMEZONE_OFFSET(date);
|
| @@ -251,6 +256,7 @@ function LocalTimezoneString(date) {
|
|
|
|
|
| function DatePrintString(date) {
|
| + CHECK_DATE(date);
|
| return DateString(date) + ' ' + TimeString(date);
|
| }
|
|
|
| @@ -303,6 +309,7 @@ function DateNow() {
|
|
|
| // ECMA 262 - 15.9.5.2
|
| function DateToString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this)
|
| if (NUMBER_IS_NAN(t)) return kInvalidDate;
|
| var time_zone_string = LocalTimezoneString(this)
|
| @@ -312,6 +319,7 @@ function DateToString() {
|
|
|
| // ECMA 262 - 15.9.5.3
|
| function DateToDateString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| if (NUMBER_IS_NAN(t)) return kInvalidDate;
|
| return DateString(this);
|
| @@ -320,6 +328,7 @@ function DateToDateString() {
|
|
|
| // ECMA 262 - 15.9.5.4
|
| function DateToTimeString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| if (NUMBER_IS_NAN(t)) return kInvalidDate;
|
| var time_zone_string = LocalTimezoneString(this);
|
| @@ -329,12 +338,14 @@ function DateToTimeString() {
|
|
|
| // ECMA 262 - 15.9.5.5
|
| function DateToLocaleString() {
|
| + CHECK_DATE(this);
|
| return %_CallFunction(this, DateToString);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.6
|
| function DateToLocaleDateString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| if (NUMBER_IS_NAN(t)) return kInvalidDate;
|
| return LongDateString(this);
|
| @@ -343,6 +354,7 @@ function DateToLocaleDateString() {
|
|
|
| // ECMA 262 - 15.9.5.7
|
| function DateToLocaleTimeString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| if (NUMBER_IS_NAN(t)) return kInvalidDate;
|
| return TimeString(this);
|
| @@ -351,114 +363,133 @@ function DateToLocaleTimeString() {
|
|
|
| // ECMA 262 - 15.9.5.8
|
| function DateValueOf() {
|
| + CHECK_DATE(this);
|
| return UTC_DATE_VALUE(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.9
|
| function DateGetTime() {
|
| + CHECK_DATE(this);
|
| return UTC_DATE_VALUE(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.10
|
| function DateGetFullYear() {
|
| + CHECK_DATE(this);
|
| return LOCAL_YEAR(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.11
|
| function DateGetUTCFullYear() {
|
| + CHECK_DATE(this);
|
| return UTC_YEAR(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.12
|
| function DateGetMonth() {
|
| + CHECK_DATE(this);
|
| return LOCAL_MONTH(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.13
|
| function DateGetUTCMonth() {
|
| + CHECK_DATE(this);
|
| return UTC_MONTH(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.14
|
| function DateGetDate() {
|
| + CHECK_DATE(this);
|
| return LOCAL_DAY(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.15
|
| function DateGetUTCDate() {
|
| + CHECK_DATE(this);
|
| return UTC_DAY(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.16
|
| function DateGetDay() {
|
| + CHECK_DATE(this);
|
| return LOCAL_WEEKDAY(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.17
|
| function DateGetUTCDay() {
|
| + CHECK_DATE(this);
|
| return UTC_WEEKDAY(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.18
|
| function DateGetHours() {
|
| + CHECK_DATE(this);
|
| return LOCAL_HOUR(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.19
|
| function DateGetUTCHours() {
|
| + CHECK_DATE(this);
|
| return UTC_HOUR(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.20
|
| function DateGetMinutes() {
|
| + CHECK_DATE(this);
|
| return LOCAL_MIN(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.21
|
| function DateGetUTCMinutes() {
|
| + CHECK_DATE(this);
|
| return UTC_MIN(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.22
|
| function DateGetSeconds() {
|
| + CHECK_DATE(this);
|
| return LOCAL_SEC(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.23
|
| function DateGetUTCSeconds() {
|
| + CHECK_DATE(this);
|
| return UTC_SEC(this)
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.24
|
| function DateGetMilliseconds() {
|
| + CHECK_DATE(this);
|
| return LOCAL_MS(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.25
|
| function DateGetUTCMilliseconds() {
|
| + CHECK_DATE(this);
|
| return UTC_MS(this);
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.5.26
|
| function DateGetTimezoneOffset() {
|
| + CHECK_DATE(this);
|
| return TIMEZONE_OFFSET(this);
|
| }
|
|
|
| @@ -473,6 +504,7 @@ function DateSetTime(ms) {
|
|
|
| // ECMA 262 - 15.9.5.28
|
| function DateSetMilliseconds(ms) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| ms = $toNumber(ms);
|
| var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms);
|
| @@ -482,6 +514,7 @@ function DateSetMilliseconds(ms) {
|
|
|
| // ECMA 262 - 15.9.5.29
|
| function DateSetUTCMilliseconds(ms) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| ms = $toNumber(ms);
|
| var time = MakeTime(UTC_HOUR(this),
|
| @@ -494,6 +527,7 @@ function DateSetUTCMilliseconds(ms) {
|
|
|
| // ECMA 262 - 15.9.5.30
|
| function DateSetSeconds(sec, ms) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| sec = $toNumber(sec);
|
| ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms);
|
| @@ -504,6 +538,7 @@ function DateSetSeconds(sec, ms) {
|
|
|
| // ECMA 262 - 15.9.5.31
|
| function DateSetUTCSeconds(sec, ms) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| sec = $toNumber(sec);
|
| ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms);
|
| @@ -514,6 +549,7 @@ function DateSetUTCSeconds(sec, ms) {
|
|
|
| // ECMA 262 - 15.9.5.33
|
| function DateSetMinutes(min, sec, ms) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| min = $toNumber(min);
|
| var argc = %_ArgumentsLength();
|
| @@ -526,6 +562,7 @@ function DateSetMinutes(min, sec, ms) {
|
|
|
| // ECMA 262 - 15.9.5.34
|
| function DateSetUTCMinutes(min, sec, ms) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| min = $toNumber(min);
|
| var argc = %_ArgumentsLength();
|
| @@ -538,6 +575,7 @@ function DateSetUTCMinutes(min, sec, ms) {
|
|
|
| // ECMA 262 - 15.9.5.35
|
| function DateSetHours(hour, min, sec, ms) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| hour = $toNumber(hour);
|
| var argc = %_ArgumentsLength();
|
| @@ -551,6 +589,7 @@ function DateSetHours(hour, min, sec, ms) {
|
|
|
| // ECMA 262 - 15.9.5.34
|
| function DateSetUTCHours(hour, min, sec, ms) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| hour = $toNumber(hour);
|
| var argc = %_ArgumentsLength();
|
| @@ -564,6 +603,7 @@ function DateSetUTCHours(hour, min, sec, ms) {
|
|
|
| // ECMA 262 - 15.9.5.36
|
| function DateSetDate(date) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| date = $toNumber(date);
|
| var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date);
|
| @@ -573,6 +613,7 @@ function DateSetDate(date) {
|
|
|
| // ECMA 262 - 15.9.5.37
|
| function DateSetUTCDate(date) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| date = $toNumber(date);
|
| var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date);
|
| @@ -582,6 +623,7 @@ function DateSetUTCDate(date) {
|
|
|
| // ECMA 262 - 15.9.5.38
|
| function DateSetMonth(month, date) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| month = $toNumber(month);
|
| date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date);
|
| @@ -592,6 +634,7 @@ function DateSetMonth(month, date) {
|
|
|
| // ECMA 262 - 15.9.5.39
|
| function DateSetUTCMonth(month, date) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| month = $toNumber(month);
|
| date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date);
|
| @@ -602,6 +645,7 @@ function DateSetUTCMonth(month, date) {
|
|
|
| // ECMA 262 - 15.9.5.40
|
| function DateSetFullYear(year, month, date) {
|
| + CHECK_DATE(this);
|
| var t = LOCAL_DATE_VALUE(this);
|
| year = $toNumber(year);
|
| var argc = %_ArgumentsLength();
|
| @@ -622,6 +666,7 @@ function DateSetFullYear(year, month, date) {
|
|
|
| // ECMA 262 - 15.9.5.41
|
| function DateSetUTCFullYear(year, month, date) {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| year = $toNumber(year);
|
| var argc = %_ArgumentsLength();
|
| @@ -642,6 +687,7 @@ function DateSetUTCFullYear(year, month, date) {
|
|
|
| // ECMA 262 - 15.9.5.42
|
| function DateToUTCString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| if (NUMBER_IS_NAN(t)) return kInvalidDate;
|
| // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT
|
| @@ -655,6 +701,7 @@ function DateToUTCString() {
|
|
|
| // ECMA 262 - B.2.4
|
| function DateGetYear() {
|
| + CHECK_DATE(this);
|
| return LOCAL_YEAR(this) - 1900;
|
| }
|
|
|
| @@ -702,6 +749,7 @@ function PadInt(n, digits) {
|
|
|
| // ECMA 262 - 15.9.5.43
|
| function DateToISOString() {
|
| + CHECK_DATE(this);
|
| var t = UTC_DATE_VALUE(this);
|
| if (NUMBER_IS_NAN(t)) throw MakeRangeError(kInvalidTimeValue);
|
| var year = this.getUTCFullYear();
|
|
|