OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file relies on the fact that the following declarations have been made | 5 // This file relies on the fact that the following declarations have been made |
6 // in v8natives.js: | 6 // in v8natives.js: |
7 // var $isFinite = GlobalIsFinite; | 7 // var $isFinite = GlobalIsFinite; |
8 | 8 |
9 var $createDate; | 9 var $createDate; |
10 | 10 |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 } | 149 } |
150 | 150 |
151 } else { | 151 } else { |
152 // According to ECMA 262, no hint should be given for this | 152 // According to ECMA 262, no hint should be given for this |
153 // conversion. However, ToPrimitive defaults to STRING_HINT for | 153 // conversion. However, ToPrimitive defaults to STRING_HINT for |
154 // Date objects which will lose precision when the Date | 154 // Date objects which will lose precision when the Date |
155 // constructor is called with another Date object as its | 155 // constructor is called with another Date object as its |
156 // argument. We therefore use NUMBER_HINT for the conversion, | 156 // argument. We therefore use NUMBER_HINT for the conversion, |
157 // which is the default for everything else than Date objects. | 157 // which is the default for everything else than Date objects. |
158 // This makes us behave like KJS and SpiderMonkey. | 158 // This makes us behave like KJS and SpiderMonkey. |
159 var time = $toPrimitive(year, NUMBER_HINT); | 159 var time = ToPrimitive(year, NUMBER_HINT); |
160 value = IS_STRING(time) ? DateParse(time) : $toNumber(time); | 160 value = IS_STRING(time) ? DateParse(time) : ToNumber(time); |
161 } | 161 } |
162 SET_UTC_DATE_VALUE(this, value); | 162 SET_UTC_DATE_VALUE(this, value); |
163 } else { | 163 } else { |
164 year = $toNumber(year); | 164 year = ToNumber(year); |
165 month = $toNumber(month); | 165 month = ToNumber(month); |
166 date = argc > 2 ? $toNumber(date) : 1; | 166 date = argc > 2 ? ToNumber(date) : 1; |
167 hours = argc > 3 ? $toNumber(hours) : 0; | 167 hours = argc > 3 ? ToNumber(hours) : 0; |
168 minutes = argc > 4 ? $toNumber(minutes) : 0; | 168 minutes = argc > 4 ? ToNumber(minutes) : 0; |
169 seconds = argc > 5 ? $toNumber(seconds) : 0; | 169 seconds = argc > 5 ? ToNumber(seconds) : 0; |
170 ms = argc > 6 ? $toNumber(ms) : 0; | 170 ms = argc > 6 ? ToNumber(ms) : 0; |
171 year = (!NUMBER_IS_NAN(year) && | 171 year = (!NUMBER_IS_NAN(year) && |
172 0 <= TO_INTEGER(year) && | 172 0 <= TO_INTEGER(year) && |
173 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 173 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
174 var day = MakeDay(year, month, date); | 174 var day = MakeDay(year, month, date); |
175 var time = MakeTime(hours, minutes, seconds, ms); | 175 var time = MakeTime(hours, minutes, seconds, ms); |
176 value = MakeDate(day, time); | 176 value = MakeDate(day, time); |
177 SET_LOCAL_DATE_VALUE(this, value); | 177 SET_LOCAL_DATE_VALUE(this, value); |
178 } | 178 } |
179 } | 179 } |
180 | 180 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 return DateString(date) + ' ' + TimeString(date); | 242 return DateString(date) + ' ' + TimeString(date); |
243 } | 243 } |
244 | 244 |
245 // ------------------------------------------------------------------- | 245 // ------------------------------------------------------------------- |
246 | 246 |
247 // Reused output buffer. Used when parsing date strings. | 247 // Reused output buffer. Used when parsing date strings. |
248 var parse_buffer = new InternalArray(8); | 248 var parse_buffer = new InternalArray(8); |
249 | 249 |
250 // ECMA 262 - 15.9.4.2 | 250 // ECMA 262 - 15.9.4.2 |
251 function DateParse(string) { | 251 function DateParse(string) { |
252 var arr = %DateParseString($toString(string), parse_buffer); | 252 var arr = %DateParseString(ToString(string), parse_buffer); |
253 if (IS_NULL(arr)) return NAN; | 253 if (IS_NULL(arr)) return NAN; |
254 | 254 |
255 var day = MakeDay(arr[0], arr[1], arr[2]); | 255 var day = MakeDay(arr[0], arr[1], arr[2]); |
256 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); | 256 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); |
257 var date = MakeDate(day, time); | 257 var date = MakeDate(day, time); |
258 | 258 |
259 if (IS_NULL(arr[7])) { | 259 if (IS_NULL(arr[7])) { |
260 return TimeClip(UTC(date)); | 260 return TimeClip(UTC(date)); |
261 } else { | 261 } else { |
262 return TimeClip(date - arr[7] * 1000); | 262 return TimeClip(date - arr[7] * 1000); |
263 } | 263 } |
264 } | 264 } |
265 | 265 |
266 | 266 |
267 // ECMA 262 - 15.9.4.3 | 267 // ECMA 262 - 15.9.4.3 |
268 function DateUTC(year, month, date, hours, minutes, seconds, ms) { | 268 function DateUTC(year, month, date, hours, minutes, seconds, ms) { |
269 year = $toNumber(year); | 269 year = ToNumber(year); |
270 month = $toNumber(month); | 270 month = ToNumber(month); |
271 var argc = %_ArgumentsLength(); | 271 var argc = %_ArgumentsLength(); |
272 date = argc > 2 ? $toNumber(date) : 1; | 272 date = argc > 2 ? ToNumber(date) : 1; |
273 hours = argc > 3 ? $toNumber(hours) : 0; | 273 hours = argc > 3 ? ToNumber(hours) : 0; |
274 minutes = argc > 4 ? $toNumber(minutes) : 0; | 274 minutes = argc > 4 ? ToNumber(minutes) : 0; |
275 seconds = argc > 5 ? $toNumber(seconds) : 0; | 275 seconds = argc > 5 ? ToNumber(seconds) : 0; |
276 ms = argc > 6 ? $toNumber(ms) : 0; | 276 ms = argc > 6 ? ToNumber(ms) : 0; |
277 year = (!NUMBER_IS_NAN(year) && | 277 year = (!NUMBER_IS_NAN(year) && |
278 0 <= TO_INTEGER(year) && | 278 0 <= TO_INTEGER(year) && |
279 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 279 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
280 var day = MakeDay(year, month, date); | 280 var day = MakeDay(year, month, date); |
281 var time = MakeTime(hours, minutes, seconds, ms); | 281 var time = MakeTime(hours, minutes, seconds, ms); |
282 return TimeClip(MakeDate(day, time)); | 282 return TimeClip(MakeDate(day, time)); |
283 } | 283 } |
284 | 284 |
285 | 285 |
286 // ECMA 262 - 15.9.4.4 | 286 // ECMA 262 - 15.9.4.4 |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 | 447 |
448 // ECMA 262 - 15.9.5.26 | 448 // ECMA 262 - 15.9.5.26 |
449 function DateGetTimezoneOffset() { | 449 function DateGetTimezoneOffset() { |
450 return TIMEZONE_OFFSET(this); | 450 return TIMEZONE_OFFSET(this); |
451 } | 451 } |
452 | 452 |
453 | 453 |
454 // ECMA 262 - 15.9.5.27 | 454 // ECMA 262 - 15.9.5.27 |
455 function DateSetTime(ms) { | 455 function DateSetTime(ms) { |
456 CHECK_DATE(this); | 456 CHECK_DATE(this); |
457 SET_UTC_DATE_VALUE(this, $toNumber(ms)); | 457 SET_UTC_DATE_VALUE(this, ToNumber(ms)); |
458 return UTC_DATE_VALUE(this); | 458 return UTC_DATE_VALUE(this); |
459 } | 459 } |
460 | 460 |
461 | 461 |
462 // ECMA 262 - 15.9.5.28 | 462 // ECMA 262 - 15.9.5.28 |
463 function DateSetMilliseconds(ms) { | 463 function DateSetMilliseconds(ms) { |
464 var t = LOCAL_DATE_VALUE(this); | 464 var t = LOCAL_DATE_VALUE(this); |
465 ms = $toNumber(ms); | 465 ms = ToNumber(ms); |
466 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); | 466 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); |
467 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 467 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
468 } | 468 } |
469 | 469 |
470 | 470 |
471 // ECMA 262 - 15.9.5.29 | 471 // ECMA 262 - 15.9.5.29 |
472 function DateSetUTCMilliseconds(ms) { | 472 function DateSetUTCMilliseconds(ms) { |
473 var t = UTC_DATE_VALUE(this); | 473 var t = UTC_DATE_VALUE(this); |
474 ms = $toNumber(ms); | 474 ms = ToNumber(ms); |
475 var time = MakeTime(UTC_HOUR(this), | 475 var time = MakeTime(UTC_HOUR(this), |
476 UTC_MIN(this), | 476 UTC_MIN(this), |
477 UTC_SEC(this), | 477 UTC_SEC(this), |
478 ms); | 478 ms); |
479 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 479 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
480 } | 480 } |
481 | 481 |
482 | 482 |
483 // ECMA 262 - 15.9.5.30 | 483 // ECMA 262 - 15.9.5.30 |
484 function DateSetSeconds(sec, ms) { | 484 function DateSetSeconds(sec, ms) { |
485 var t = LOCAL_DATE_VALUE(this); | 485 var t = LOCAL_DATE_VALUE(this); |
486 sec = $toNumber(sec); | 486 sec = ToNumber(sec); |
487 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms); | 487 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); |
488 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); | 488 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); |
489 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 489 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
490 } | 490 } |
491 | 491 |
492 | 492 |
493 // ECMA 262 - 15.9.5.31 | 493 // ECMA 262 - 15.9.5.31 |
494 function DateSetUTCSeconds(sec, ms) { | 494 function DateSetUTCSeconds(sec, ms) { |
495 var t = UTC_DATE_VALUE(this); | 495 var t = UTC_DATE_VALUE(this); |
496 sec = $toNumber(sec); | 496 sec = ToNumber(sec); |
497 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms); | 497 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); |
498 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); | 498 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); |
499 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 499 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
500 } | 500 } |
501 | 501 |
502 | 502 |
503 // ECMA 262 - 15.9.5.33 | 503 // ECMA 262 - 15.9.5.33 |
504 function DateSetMinutes(min, sec, ms) { | 504 function DateSetMinutes(min, sec, ms) { |
505 var t = LOCAL_DATE_VALUE(this); | 505 var t = LOCAL_DATE_VALUE(this); |
506 min = $toNumber(min); | 506 min = ToNumber(min); |
507 var argc = %_ArgumentsLength(); | 507 var argc = %_ArgumentsLength(); |
508 sec = argc < 2 ? LOCAL_SEC(this) : $toNumber(sec); | 508 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); |
509 ms = argc < 3 ? LOCAL_MS(this) : $toNumber(ms); | 509 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); |
510 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); | 510 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); |
511 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 511 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
512 } | 512 } |
513 | 513 |
514 | 514 |
515 // ECMA 262 - 15.9.5.34 | 515 // ECMA 262 - 15.9.5.34 |
516 function DateSetUTCMinutes(min, sec, ms) { | 516 function DateSetUTCMinutes(min, sec, ms) { |
517 var t = UTC_DATE_VALUE(this); | 517 var t = UTC_DATE_VALUE(this); |
518 min = $toNumber(min); | 518 min = ToNumber(min); |
519 var argc = %_ArgumentsLength(); | 519 var argc = %_ArgumentsLength(); |
520 sec = argc < 2 ? UTC_SEC(this) : $toNumber(sec); | 520 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); |
521 ms = argc < 3 ? UTC_MS(this) : $toNumber(ms); | 521 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); |
522 var time = MakeTime(UTC_HOUR(this), min, sec, ms); | 522 var time = MakeTime(UTC_HOUR(this), min, sec, ms); |
523 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 523 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
524 } | 524 } |
525 | 525 |
526 | 526 |
527 // ECMA 262 - 15.9.5.35 | 527 // ECMA 262 - 15.9.5.35 |
528 function DateSetHours(hour, min, sec, ms) { | 528 function DateSetHours(hour, min, sec, ms) { |
529 var t = LOCAL_DATE_VALUE(this); | 529 var t = LOCAL_DATE_VALUE(this); |
530 hour = $toNumber(hour); | 530 hour = ToNumber(hour); |
531 var argc = %_ArgumentsLength(); | 531 var argc = %_ArgumentsLength(); |
532 min = argc < 2 ? LOCAL_MIN(this) : $toNumber(min); | 532 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); |
533 sec = argc < 3 ? LOCAL_SEC(this) : $toNumber(sec); | 533 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); |
534 ms = argc < 4 ? LOCAL_MS(this) : $toNumber(ms); | 534 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); |
535 var time = MakeTime(hour, min, sec, ms); | 535 var time = MakeTime(hour, min, sec, ms); |
536 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 536 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
537 } | 537 } |
538 | 538 |
539 | 539 |
540 // ECMA 262 - 15.9.5.34 | 540 // ECMA 262 - 15.9.5.34 |
541 function DateSetUTCHours(hour, min, sec, ms) { | 541 function DateSetUTCHours(hour, min, sec, ms) { |
542 var t = UTC_DATE_VALUE(this); | 542 var t = UTC_DATE_VALUE(this); |
543 hour = $toNumber(hour); | 543 hour = ToNumber(hour); |
544 var argc = %_ArgumentsLength(); | 544 var argc = %_ArgumentsLength(); |
545 min = argc < 2 ? UTC_MIN(this) : $toNumber(min); | 545 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); |
546 sec = argc < 3 ? UTC_SEC(this) : $toNumber(sec); | 546 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); |
547 ms = argc < 4 ? UTC_MS(this) : $toNumber(ms); | 547 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); |
548 var time = MakeTime(hour, min, sec, ms); | 548 var time = MakeTime(hour, min, sec, ms); |
549 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 549 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
550 } | 550 } |
551 | 551 |
552 | 552 |
553 // ECMA 262 - 15.9.5.36 | 553 // ECMA 262 - 15.9.5.36 |
554 function DateSetDate(date) { | 554 function DateSetDate(date) { |
555 var t = LOCAL_DATE_VALUE(this); | 555 var t = LOCAL_DATE_VALUE(this); |
556 date = $toNumber(date); | 556 date = ToNumber(date); |
557 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); | 557 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); |
558 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 558 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
559 } | 559 } |
560 | 560 |
561 | 561 |
562 // ECMA 262 - 15.9.5.37 | 562 // ECMA 262 - 15.9.5.37 |
563 function DateSetUTCDate(date) { | 563 function DateSetUTCDate(date) { |
564 var t = UTC_DATE_VALUE(this); | 564 var t = UTC_DATE_VALUE(this); |
565 date = $toNumber(date); | 565 date = ToNumber(date); |
566 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); | 566 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); |
567 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 567 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
568 } | 568 } |
569 | 569 |
570 | 570 |
571 // ECMA 262 - 15.9.5.38 | 571 // ECMA 262 - 15.9.5.38 |
572 function DateSetMonth(month, date) { | 572 function DateSetMonth(month, date) { |
573 var t = LOCAL_DATE_VALUE(this); | 573 var t = LOCAL_DATE_VALUE(this); |
574 month = $toNumber(month); | 574 month = ToNumber(month); |
575 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date); | 575 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); |
576 var day = MakeDay(LOCAL_YEAR(this), month, date); | 576 var day = MakeDay(LOCAL_YEAR(this), month, date); |
577 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 577 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
578 } | 578 } |
579 | 579 |
580 | 580 |
581 // ECMA 262 - 15.9.5.39 | 581 // ECMA 262 - 15.9.5.39 |
582 function DateSetUTCMonth(month, date) { | 582 function DateSetUTCMonth(month, date) { |
583 var t = UTC_DATE_VALUE(this); | 583 var t = UTC_DATE_VALUE(this); |
584 month = $toNumber(month); | 584 month = ToNumber(month); |
585 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date); | 585 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); |
586 var day = MakeDay(UTC_YEAR(this), month, date); | 586 var day = MakeDay(UTC_YEAR(this), month, date); |
587 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 587 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
588 } | 588 } |
589 | 589 |
590 | 590 |
591 // ECMA 262 - 15.9.5.40 | 591 // ECMA 262 - 15.9.5.40 |
592 function DateSetFullYear(year, month, date) { | 592 function DateSetFullYear(year, month, date) { |
593 var t = LOCAL_DATE_VALUE(this); | 593 var t = LOCAL_DATE_VALUE(this); |
594 year = $toNumber(year); | 594 year = ToNumber(year); |
595 var argc = %_ArgumentsLength(); | 595 var argc = %_ArgumentsLength(); |
596 var time ; | 596 var time ; |
597 if (NUMBER_IS_NAN(t)) { | 597 if (NUMBER_IS_NAN(t)) { |
598 month = argc < 2 ? 0 : $toNumber(month); | 598 month = argc < 2 ? 0 : ToNumber(month); |
599 date = argc < 3 ? 1 : $toNumber(date); | 599 date = argc < 3 ? 1 : ToNumber(date); |
600 time = 0; | 600 time = 0; |
601 } else { | 601 } else { |
602 month = argc < 2 ? LOCAL_MONTH(this) : $toNumber(month); | 602 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); |
603 date = argc < 3 ? LOCAL_DAY(this) : $toNumber(date); | 603 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); |
604 time = LOCAL_TIME_IN_DAY(this); | 604 time = LOCAL_TIME_IN_DAY(this); |
605 } | 605 } |
606 var day = MakeDay(year, month, date); | 606 var day = MakeDay(year, month, date); |
607 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); | 607 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); |
608 } | 608 } |
609 | 609 |
610 | 610 |
611 // ECMA 262 - 15.9.5.41 | 611 // ECMA 262 - 15.9.5.41 |
612 function DateSetUTCFullYear(year, month, date) { | 612 function DateSetUTCFullYear(year, month, date) { |
613 var t = UTC_DATE_VALUE(this); | 613 var t = UTC_DATE_VALUE(this); |
614 year = $toNumber(year); | 614 year = ToNumber(year); |
615 var argc = %_ArgumentsLength(); | 615 var argc = %_ArgumentsLength(); |
616 var time ; | 616 var time ; |
617 if (NUMBER_IS_NAN(t)) { | 617 if (NUMBER_IS_NAN(t)) { |
618 month = argc < 2 ? 0 : $toNumber(month); | 618 month = argc < 2 ? 0 : ToNumber(month); |
619 date = argc < 3 ? 1 : $toNumber(date); | 619 date = argc < 3 ? 1 : ToNumber(date); |
620 time = 0; | 620 time = 0; |
621 } else { | 621 } else { |
622 month = argc < 2 ? UTC_MONTH(this) : $toNumber(month); | 622 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); |
623 date = argc < 3 ? UTC_DAY(this) : $toNumber(date); | 623 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); |
624 time = UTC_TIME_IN_DAY(this); | 624 time = UTC_TIME_IN_DAY(this); |
625 } | 625 } |
626 var day = MakeDay(year, month, date); | 626 var day = MakeDay(year, month, date); |
627 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); | 627 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); |
628 } | 628 } |
629 | 629 |
630 | 630 |
631 // ECMA 262 - 15.9.5.42 | 631 // ECMA 262 - 15.9.5.42 |
632 function DateToUTCString() { | 632 function DateToUTCString() { |
633 var t = UTC_DATE_VALUE(this); | 633 var t = UTC_DATE_VALUE(this); |
634 if (NUMBER_IS_NAN(t)) return kInvalidDate; | 634 if (NUMBER_IS_NAN(t)) return kInvalidDate; |
635 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT | 635 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT |
636 return WeekDays[UTC_WEEKDAY(this)] + ', ' | 636 return WeekDays[UTC_WEEKDAY(this)] + ', ' |
637 + TwoDigitString(UTC_DAY(this)) + ' ' | 637 + TwoDigitString(UTC_DAY(this)) + ' ' |
638 + Months[UTC_MONTH(this)] + ' ' | 638 + Months[UTC_MONTH(this)] + ' ' |
639 + UTC_YEAR(this) + ' ' | 639 + UTC_YEAR(this) + ' ' |
640 + TimeStringUTC(this) + ' GMT'; | 640 + TimeStringUTC(this) + ' GMT'; |
641 } | 641 } |
642 | 642 |
643 | 643 |
644 // ECMA 262 - B.2.4 | 644 // ECMA 262 - B.2.4 |
645 function DateGetYear() { | 645 function DateGetYear() { |
646 return LOCAL_YEAR(this) - 1900; | 646 return LOCAL_YEAR(this) - 1900; |
647 } | 647 } |
648 | 648 |
649 | 649 |
650 // ECMA 262 - B.2.5 | 650 // ECMA 262 - B.2.5 |
651 function DateSetYear(year) { | 651 function DateSetYear(year) { |
652 CHECK_DATE(this); | 652 CHECK_DATE(this); |
653 year = $toNumber(year); | 653 year = ToNumber(year); |
654 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); | 654 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); |
655 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) | 655 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) |
656 ? 1900 + TO_INTEGER(year) : year; | 656 ? 1900 + TO_INTEGER(year) : year; |
657 var t = LOCAL_DATE_VALUE(this); | 657 var t = LOCAL_DATE_VALUE(this); |
658 var month, date, time; | 658 var month, date, time; |
659 if (NUMBER_IS_NAN(t)) { | 659 if (NUMBER_IS_NAN(t)) { |
660 month = 0; | 660 month = 0; |
661 date = 1; | 661 date = 1; |
662 time = 0; | 662 time = 0; |
663 } else { | 663 } else { |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
708 '-' + PadInt(this.getUTCDate(), 2) + | 708 '-' + PadInt(this.getUTCDate(), 2) + |
709 'T' + PadInt(this.getUTCHours(), 2) + | 709 'T' + PadInt(this.getUTCHours(), 2) + |
710 ':' + PadInt(this.getUTCMinutes(), 2) + | 710 ':' + PadInt(this.getUTCMinutes(), 2) + |
711 ':' + PadInt(this.getUTCSeconds(), 2) + | 711 ':' + PadInt(this.getUTCSeconds(), 2) + |
712 '.' + PadInt(this.getUTCMilliseconds(), 3) + | 712 '.' + PadInt(this.getUTCMilliseconds(), 3) + |
713 'Z'; | 713 'Z'; |
714 } | 714 } |
715 | 715 |
716 | 716 |
717 function DateToJSON(key) { | 717 function DateToJSON(key) { |
718 var o = $toObject(this); | 718 var o = ToObject(this); |
719 var tv = $defaultNumber(o); | 719 var tv = DefaultNumber(o); |
720 if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) { | 720 if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) { |
721 return null; | 721 return null; |
722 } | 722 } |
723 return o.toISOString(); | 723 return o.toISOString(); |
724 } | 724 } |
725 | 725 |
726 | 726 |
727 var date_cache_version_holder; | 727 var date_cache_version_holder; |
728 var date_cache_version = NAN; | 728 var date_cache_version = NAN; |
729 | 729 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 "getYear", DateGetYear, | 817 "getYear", DateGetYear, |
818 "setYear", DateSetYear, | 818 "setYear", DateSetYear, |
819 "toISOString", DateToISOString, | 819 "toISOString", DateToISOString, |
820 "toJSON", DateToJSON | 820 "toJSON", DateToJSON |
821 ]); | 821 ]); |
822 | 822 |
823 // Expose to the global scope. | 823 // Expose to the global scope. |
824 $createDate = CreateDate; | 824 $createDate = CreateDate; |
825 | 825 |
826 })(); | 826 })(); |
OLD | NEW |