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 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 year = (!NUMBER_IS_NAN(year) && 0 <= TO_INTEGER(year) && TO_INTEGER(year) <=
99) | 446 year = (!NUMBER_IS_NAN(year) && 0 <= TO_INTEGER(year) && TO_INTEGER(year) <=
99) |
447 ? 1900 + TO_INTEGER(year) : year; | 447 ? 1900 + TO_INTEGER(year) : year; |
448 var day = MakeDay(year, month, date); | 448 var day = MakeDay(year, month, date); |
449 var time = MakeTime(hours, minutes, seconds, ms); | 449 var time = MakeTime(hours, minutes, seconds, ms); |
450 value = TimeClip(UTC(MakeDate(day, time))); | 450 value = TimeClip(UTC(MakeDate(day, time))); |
451 } | 451 } |
452 %_SetValueOf(this, value); | 452 %_SetValueOf(this, value); |
453 }); | 453 }); |
454 | 454 |
455 | 455 |
456 // Helper functions. | |
457 function GetTimeFrom(aDate) { | |
458 return DATE_VALUE(aDate); | |
459 } | |
460 | |
461 function GetMillisecondsFrom(aDate) { | |
462 var t = DATE_VALUE(aDate); | |
463 if (NUMBER_IS_NAN(t)) return t; | |
464 return MS_FROM_TIME(LocalTimeNoCheck(t)); | |
465 } | |
466 | |
467 | |
468 function GetUTCMillisecondsFrom(aDate) { | |
469 var t = DATE_VALUE(aDate); | |
470 if (NUMBER_IS_NAN(t)) return t; | |
471 return MS_FROM_TIME(t); | |
472 } | |
473 | |
474 | |
475 function GetSecondsFrom(aDate) { | |
476 var t = DATE_VALUE(aDate); | |
477 if (NUMBER_IS_NAN(t)) return t; | |
478 return SEC_FROM_TIME(LocalTimeNoCheck(t)); | |
479 } | |
480 | |
481 | |
482 function GetUTCSecondsFrom(aDate) { | |
483 var t = DATE_VALUE(aDate); | |
484 if (NUMBER_IS_NAN(t)) return t; | |
485 return SEC_FROM_TIME(t); | |
486 } | |
487 | |
488 | |
489 function GetMinutesFrom(aDate) { | |
490 var t = DATE_VALUE(aDate); | |
491 if (NUMBER_IS_NAN(t)) return t; | |
492 return MIN_FROM_TIME(LocalTimeNoCheck(t)); | |
493 } | |
494 | |
495 | |
496 function GetUTCMinutesFrom(aDate) { | |
497 var t = DATE_VALUE(aDate); | |
498 if (NUMBER_IS_NAN(t)) return t; | |
499 return MIN_FROM_TIME(t); | |
500 } | |
501 | |
502 | |
503 function GetHoursFrom(aDate) { | |
504 var t = DATE_VALUE(aDate); | |
505 if (NUMBER_IS_NAN(t)) return t; | |
506 return HOUR_FROM_TIME(LocalTimeNoCheck(t)); | |
507 } | |
508 | |
509 | |
510 function GetUTCHoursFrom(aDate) { | |
511 var t = DATE_VALUE(aDate); | |
512 if (NUMBER_IS_NAN(t)) return t; | |
513 return HOUR_FROM_TIME(t); | |
514 } | |
515 | |
516 | |
517 function GetFullYearFrom(aDate) { | |
518 var t = DATE_VALUE(aDate); | |
519 if (NUMBER_IS_NAN(t)) return t; | |
520 var cache = Date_cache; | |
521 if (cache.time === t) return cache.year; | |
522 return YEAR_FROM_TIME(LocalTimeNoCheck(t)); | |
523 } | |
524 | |
525 | |
526 function GetUTCFullYearFrom(aDate) { | |
527 var t = DATE_VALUE(aDate); | |
528 if (NUMBER_IS_NAN(t)) return t; | |
529 return YEAR_FROM_TIME(t); | |
530 } | |
531 | |
532 | |
533 function GetMonthFrom(aDate) { | |
534 var t = DATE_VALUE(aDate); | |
535 if (NUMBER_IS_NAN(t)) return t; | |
536 return MONTH_FROM_TIME(LocalTimeNoCheck(t)); | |
537 } | |
538 | |
539 | |
540 function GetUTCMonthFrom(aDate) { | |
541 var t = DATE_VALUE(aDate); | |
542 if (NUMBER_IS_NAN(t)) return t; | |
543 return MONTH_FROM_TIME(t); | |
544 } | |
545 | |
546 | |
547 function GetDateFrom(aDate) { | |
548 var t = DATE_VALUE(aDate); | |
549 if (NUMBER_IS_NAN(t)) return t; | |
550 return DATE_FROM_TIME(LocalTimeNoCheck(t)); | |
551 } | |
552 | |
553 | |
554 function GetUTCDateFrom(aDate) { | |
555 var t = DATE_VALUE(aDate); | |
556 if (NUMBER_IS_NAN(t)) return t; | |
557 return DATE_FROM_TIME(t); | |
558 } | |
559 | |
560 | |
561 %FunctionSetPrototype($Date, new $Date($NaN)); | 456 %FunctionSetPrototype($Date, new $Date($NaN)); |
562 | 457 |
563 | 458 |
564 var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; | 459 var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; |
565 var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oc
t', 'Nov', 'Dec']; | 460 var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oc
t', 'Nov', 'Dec']; |
566 | 461 |
567 | 462 |
568 function TwoDigitString(value) { | 463 function TwoDigitString(value) { |
569 return value < 10 ? "0" + value : "" + value; | 464 return value < 10 ? "0" + value : "" + value; |
570 } | 465 } |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 | 625 |
731 | 626 |
732 // ECMA 262 - 15.9.5.9 | 627 // ECMA 262 - 15.9.5.9 |
733 function DateGetTime() { | 628 function DateGetTime() { |
734 return DATE_VALUE(this); | 629 return DATE_VALUE(this); |
735 } | 630 } |
736 | 631 |
737 | 632 |
738 // ECMA 262 - 15.9.5.10 | 633 // ECMA 262 - 15.9.5.10 |
739 function DateGetFullYear() { | 634 function DateGetFullYear() { |
740 return GetFullYearFrom(this) | 635 var t = DATE_VALUE(this); |
| 636 if (NUMBER_IS_NAN(t)) return t; |
| 637 var cache = Date_cache; |
| 638 if (cache.time === t) return cache.year; |
| 639 return YEAR_FROM_TIME(LocalTimeNoCheck(t)); |
741 } | 640 } |
742 | 641 |
743 | 642 |
744 // ECMA 262 - 15.9.5.11 | 643 // ECMA 262 - 15.9.5.11 |
745 function DateGetUTCFullYear() { | 644 function DateGetUTCFullYear() { |
746 return GetUTCFullYearFrom(this) | 645 var t = DATE_VALUE(this); |
| 646 if (NUMBER_IS_NAN(t)) return t; |
| 647 return YEAR_FROM_TIME(t); |
747 } | 648 } |
748 | 649 |
749 | 650 |
750 // ECMA 262 - 15.9.5.12 | 651 // ECMA 262 - 15.9.5.12 |
751 function DateGetMonth() { | 652 function DateGetMonth() { |
752 return GetMonthFrom(this); | 653 var t = DATE_VALUE(this); |
| 654 if (NUMBER_IS_NAN(t)) return t; |
| 655 return MONTH_FROM_TIME(LocalTimeNoCheck(t)); |
753 } | 656 } |
754 | 657 |
755 | 658 |
756 // ECMA 262 - 15.9.5.13 | 659 // ECMA 262 - 15.9.5.13 |
757 function DateGetUTCMonth() { | 660 function DateGetUTCMonth() { |
758 return GetUTCMonthFrom(this); | 661 var t = DATE_VALUE(this); |
| 662 if (NUMBER_IS_NAN(t)) return t; |
| 663 return MONTH_FROM_TIME(t); |
759 } | 664 } |
760 | 665 |
761 | 666 |
762 // ECMA 262 - 15.9.5.14 | 667 // ECMA 262 - 15.9.5.14 |
763 function DateGetDate() { | 668 function DateGetDate() { |
764 return GetDateFrom(this); | 669 var t = DATE_VALUE(this); |
| 670 if (NUMBER_IS_NAN(t)) return t; |
| 671 return DATE_FROM_TIME(LocalTimeNoCheck(t)); |
765 } | 672 } |
766 | 673 |
767 | 674 |
768 // ECMA 262 - 15.9.5.15 | 675 // ECMA 262 - 15.9.5.15 |
769 function DateGetUTCDate() { | 676 function DateGetUTCDate() { |
770 return GetUTCDateFrom(this); | 677 var t = DATE_VALUE(this); |
| 678 return NAN_OR_DATE_FROM_TIME(t); |
771 } | 679 } |
772 | 680 |
773 | 681 |
774 // ECMA 262 - 15.9.5.16 | 682 // ECMA 262 - 15.9.5.16 |
775 function DateGetDay() { | 683 function DateGetDay() { |
776 var t = %_ValueOf(this); | 684 var t = %_ValueOf(this); |
777 if (NUMBER_IS_NAN(t)) return t; | 685 if (NUMBER_IS_NAN(t)) return t; |
778 return WeekDay(LocalTimeNoCheck(t)); | 686 return WeekDay(LocalTimeNoCheck(t)); |
779 } | 687 } |
780 | 688 |
781 | 689 |
782 // ECMA 262 - 15.9.5.17 | 690 // ECMA 262 - 15.9.5.17 |
783 function DateGetUTCDay() { | 691 function DateGetUTCDay() { |
784 var t = %_ValueOf(this); | 692 var t = %_ValueOf(this); |
785 if (NUMBER_IS_NAN(t)) return t; | 693 if (NUMBER_IS_NAN(t)) return t; |
786 return WeekDay(t); | 694 return WeekDay(t); |
787 } | 695 } |
788 | 696 |
789 | 697 |
790 // ECMA 262 - 15.9.5.18 | 698 // ECMA 262 - 15.9.5.18 |
791 function DateGetHours() { | 699 function DateGetHours() { |
792 return GetHoursFrom(this); | 700 var t = DATE_VALUE(this); |
| 701 if (NUMBER_IS_NAN(t)) return t; |
| 702 return HOUR_FROM_TIME(LocalTimeNoCheck(t)); |
793 } | 703 } |
794 | 704 |
795 | 705 |
796 // ECMA 262 - 15.9.5.19 | 706 // ECMA 262 - 15.9.5.19 |
797 function DateGetUTCHours() { | 707 function DateGetUTCHours() { |
798 return GetUTCHoursFrom(this); | 708 var t = DATE_VALUE(this); |
| 709 if (NUMBER_IS_NAN(t)) return t; |
| 710 return HOUR_FROM_TIME(t); |
799 } | 711 } |
800 | 712 |
801 | 713 |
802 // ECMA 262 - 15.9.5.20 | 714 // ECMA 262 - 15.9.5.20 |
803 function DateGetMinutes() { | 715 function DateGetMinutes() { |
804 return GetMinutesFrom(this); | 716 var t = DATE_VALUE(this); |
| 717 if (NUMBER_IS_NAN(t)) return t; |
| 718 return MIN_FROM_TIME(LocalTimeNoCheck(t)); |
805 } | 719 } |
806 | 720 |
807 | 721 |
808 // ECMA 262 - 15.9.5.21 | 722 // ECMA 262 - 15.9.5.21 |
809 function DateGetUTCMinutes() { | 723 function DateGetUTCMinutes() { |
810 return GetUTCMinutesFrom(this); | 724 var t = DATE_VALUE(this); |
| 725 return NAN_OR_MIN_FROM_TIME(t); |
811 } | 726 } |
812 | 727 |
813 | 728 |
814 // ECMA 262 - 15.9.5.22 | 729 // ECMA 262 - 15.9.5.22 |
815 function DateGetSeconds() { | 730 function DateGetSeconds() { |
816 return GetSecondsFrom(this); | 731 var t = DATE_VALUE(this); |
| 732 if (NUMBER_IS_NAN(t)) return t; |
| 733 return SEC_FROM_TIME(LocalTimeNoCheck(t)); |
817 } | 734 } |
818 | 735 |
819 | 736 |
820 // ECMA 262 - 15.9.5.23 | 737 // ECMA 262 - 15.9.5.23 |
821 function DateGetUTCSeconds() { | 738 function DateGetUTCSeconds() { |
822 return GetUTCSecondsFrom(this); | 739 var t = DATE_VALUE(this); |
| 740 return NAN_OR_SEC_FROM_TIME(t); |
823 } | 741 } |
824 | 742 |
825 | 743 |
826 // ECMA 262 - 15.9.5.24 | 744 // ECMA 262 - 15.9.5.24 |
827 function DateGetMilliseconds() { | 745 function DateGetMilliseconds() { |
828 return GetMillisecondsFrom(this); | 746 var t = DATE_VALUE(this); |
| 747 if (NUMBER_IS_NAN(t)) return t; |
| 748 return MS_FROM_TIME(LocalTimeNoCheck(t)); |
829 } | 749 } |
830 | 750 |
831 | 751 |
832 // ECMA 262 - 15.9.5.25 | 752 // ECMA 262 - 15.9.5.25 |
833 function DateGetUTCMilliseconds() { | 753 function DateGetUTCMilliseconds() { |
834 return GetUTCMillisecondsFrom(this); | 754 var t = DATE_VALUE(this); |
| 755 return NAN_OR_MS_FROM_TIME(t); |
835 } | 756 } |
836 | 757 |
837 | 758 |
838 // ECMA 262 - 15.9.5.26 | 759 // ECMA 262 - 15.9.5.26 |
839 function DateGetTimezoneOffset() { | 760 function DateGetTimezoneOffset() { |
840 var t = DATE_VALUE(this); | 761 var t = DATE_VALUE(this); |
841 if (NUMBER_IS_NAN(t)) return t; | 762 if (NUMBER_IS_NAN(t)) return t; |
842 return (t - LocalTimeNoCheck(t)) / msPerMinute; | 763 return (t - LocalTimeNoCheck(t)) / msPerMinute; |
843 } | 764 } |
844 | 765 |
(...skipping 20 matching lines...) Expand all Loading... |
865 ms = ToNumber(ms); | 786 ms = ToNumber(ms); |
866 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), SEC_FROM_TIME(t), ms)
; | 787 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), SEC_FROM_TIME(t), ms)
; |
867 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 788 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
868 } | 789 } |
869 | 790 |
870 | 791 |
871 // ECMA 262 - 15.9.5.30 | 792 // ECMA 262 - 15.9.5.30 |
872 function DateSetSeconds(sec, ms) { | 793 function DateSetSeconds(sec, ms) { |
873 var t = LocalTime(DATE_VALUE(this)); | 794 var t = LocalTime(DATE_VALUE(this)); |
874 sec = ToNumber(sec); | 795 sec = ToNumber(sec); |
875 ms = %_ArgumentsLength() < 2 ? GetMillisecondsFrom(this) : ToNumber(ms); | 796 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
876 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); | 797 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); |
877 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 798 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
878 } | 799 } |
879 | 800 |
880 | 801 |
881 // ECMA 262 - 15.9.5.31 | 802 // ECMA 262 - 15.9.5.31 |
882 function DateSetUTCSeconds(sec, ms) { | 803 function DateSetUTCSeconds(sec, ms) { |
883 var t = DATE_VALUE(this); | 804 var t = DATE_VALUE(this); |
884 sec = ToNumber(sec); | 805 sec = ToNumber(sec); |
885 ms = %_ArgumentsLength() < 2 ? GetUTCMillisecondsFrom(this) : ToNumber(ms); | 806 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
886 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); | 807 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); |
887 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 808 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
888 } | 809 } |
889 | 810 |
890 | 811 |
891 // ECMA 262 - 15.9.5.33 | 812 // ECMA 262 - 15.9.5.33 |
892 function DateSetMinutes(min, sec, ms) { | 813 function DateSetMinutes(min, sec, ms) { |
893 var t = LocalTime(DATE_VALUE(this)); | 814 var t = LocalTime(DATE_VALUE(this)); |
894 min = ToNumber(min); | 815 min = ToNumber(min); |
895 var argc = %_ArgumentsLength(); | 816 var argc = %_ArgumentsLength(); |
896 sec = argc < 2 ? GetSecondsFrom(this) : ToNumber(sec); | 817 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
897 ms = argc < 3 ? GetMillisecondsFrom(this) : ToNumber(ms); | 818 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
898 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); | 819 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); |
899 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 820 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
900 } | 821 } |
901 | 822 |
902 | 823 |
903 // ECMA 262 - 15.9.5.34 | 824 // ECMA 262 - 15.9.5.34 |
904 function DateSetUTCMinutes(min, sec, ms) { | 825 function DateSetUTCMinutes(min, sec, ms) { |
905 var t = DATE_VALUE(this); | 826 var t = DATE_VALUE(this); |
906 min = ToNumber(min); | 827 min = ToNumber(min); |
907 var argc = %_ArgumentsLength(); | 828 var argc = %_ArgumentsLength(); |
908 sec = argc < 2 ? GetUTCSecondsFrom(this) : ToNumber(sec); | 829 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
909 ms = argc < 3 ? GetUTCMillisecondsFrom(this) : ToNumber(ms); | 830 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
910 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); | 831 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); |
911 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 832 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
912 } | 833 } |
913 | 834 |
914 | 835 |
915 // ECMA 262 - 15.9.5.35 | 836 // ECMA 262 - 15.9.5.35 |
916 function DateSetHours(hour, min, sec, ms) { | 837 function DateSetHours(hour, min, sec, ms) { |
917 var t = LocalTime(DATE_VALUE(this)); | 838 var t = LocalTime(DATE_VALUE(this)); |
918 hour = ToNumber(hour); | 839 hour = ToNumber(hour); |
919 var argc = %_ArgumentsLength(); | 840 var argc = %_ArgumentsLength(); |
920 min = argc < 2 ? GetMinutesFrom(this) : ToNumber(min); | 841 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); |
921 sec = argc < 3 ? GetSecondsFrom(this) : ToNumber(sec); | 842 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
922 ms = argc < 4 ? GetMillisecondsFrom(this) : ToNumber(ms); | 843 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
923 var time = MakeTime(hour, min, sec, ms); | 844 var time = MakeTime(hour, min, sec, ms); |
924 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 845 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
925 } | 846 } |
926 | 847 |
927 | 848 |
928 // ECMA 262 - 15.9.5.34 | 849 // ECMA 262 - 15.9.5.34 |
929 function DateSetUTCHours(hour, min, sec, ms) { | 850 function DateSetUTCHours(hour, min, sec, ms) { |
930 var t = DATE_VALUE(this); | 851 var t = DATE_VALUE(this); |
931 hour = ToNumber(hour); | 852 hour = ToNumber(hour); |
932 var argc = %_ArgumentsLength(); | 853 var argc = %_ArgumentsLength(); |
933 min = argc < 2 ? GetUTCMinutesFrom(this) : ToNumber(min); | 854 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); |
934 sec = argc < 3 ? GetUTCSecondsFrom(this) : ToNumber(sec); | 855 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
935 ms = argc < 4 ? GetUTCMillisecondsFrom(this) : ToNumber(ms); | 856 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
936 var time = MakeTime(hour, min, sec, ms); | 857 var time = MakeTime(hour, min, sec, ms); |
937 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 858 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
938 } | 859 } |
939 | 860 |
940 | 861 |
941 // ECMA 262 - 15.9.5.36 | 862 // ECMA 262 - 15.9.5.36 |
942 function DateSetDate(date) { | 863 function DateSetDate(date) { |
943 var t = LocalTime(DATE_VALUE(this)); | 864 var t = LocalTime(DATE_VALUE(this)); |
944 date = ToNumber(date); | 865 date = ToNumber(date); |
945 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); | 866 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); |
946 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 867 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
947 } | 868 } |
948 | 869 |
949 | 870 |
950 // ECMA 262 - 15.9.5.37 | 871 // ECMA 262 - 15.9.5.37 |
951 function DateSetUTCDate(date) { | 872 function DateSetUTCDate(date) { |
952 var t = DATE_VALUE(this); | 873 var t = DATE_VALUE(this); |
953 date = ToNumber(date); | 874 date = ToNumber(date); |
954 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); | 875 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); |
955 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 876 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
956 } | 877 } |
957 | 878 |
958 | 879 |
959 // ECMA 262 - 15.9.5.38 | 880 // ECMA 262 - 15.9.5.38 |
960 function DateSetMonth(month, date) { | 881 function DateSetMonth(month, date) { |
961 var t = LocalTime(DATE_VALUE(this)); | 882 var t = LocalTime(DATE_VALUE(this)); |
962 month = ToNumber(month); | 883 month = ToNumber(month); |
963 date = %_ArgumentsLength() < 2 ? GetDateFrom(this) : ToNumber(date); | 884 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); |
964 var day = MakeDay(YEAR_FROM_TIME(t), month, date); | 885 var day = MakeDay(YEAR_FROM_TIME(t), month, date); |
965 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 886 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
966 } | 887 } |
967 | 888 |
968 | 889 |
969 // ECMA 262 - 15.9.5.39 | 890 // ECMA 262 - 15.9.5.39 |
970 function DateSetUTCMonth(month, date) { | 891 function DateSetUTCMonth(month, date) { |
971 var t = DATE_VALUE(this); | 892 var t = DATE_VALUE(this); |
972 month = ToNumber(month); | 893 month = ToNumber(month); |
973 date = %_ArgumentsLength() < 2 ? GetUTCDateFrom(this) : ToNumber(date); | 894 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); |
974 var day = MakeDay(YEAR_FROM_TIME(t), month, date); | 895 var day = MakeDay(YEAR_FROM_TIME(t), month, date); |
975 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 896 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
976 } | 897 } |
977 | 898 |
978 | 899 |
979 // ECMA 262 - 15.9.5.40 | 900 // ECMA 262 - 15.9.5.40 |
980 function DateSetFullYear(year, month, date) { | 901 function DateSetFullYear(year, month, date) { |
981 var t = DATE_VALUE(this); | 902 var t = DATE_VALUE(this); |
982 t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t); | 903 t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t); |
983 year = ToNumber(year); | 904 year = ToNumber(year); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 "toGMTString", DateToGMTString, | 1050 "toGMTString", DateToGMTString, |
1130 "toUTCString", DateToUTCString, | 1051 "toUTCString", DateToUTCString, |
1131 "getYear", DateGetYear, | 1052 "getYear", DateGetYear, |
1132 "setYear", DateSetYear, | 1053 "setYear", DateSetYear, |
1133 "toISOString", DateToISOString, | 1054 "toISOString", DateToISOString, |
1134 "toJSON", DateToJSON | 1055 "toJSON", DateToJSON |
1135 )); | 1056 )); |
1136 } | 1057 } |
1137 | 1058 |
1138 SetupDate(); | 1059 SetupDate(); |
OLD | NEW |