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 966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 | 977 |
978 function PadInt(n, digits) { | 978 function PadInt(n, digits) { |
979 if (digits == 1) return n; | 979 if (digits == 1) return n; |
980 return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n; | 980 return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n; |
981 } | 981 } |
982 | 982 |
983 | 983 |
984 function DateToISOString() { | 984 function DateToISOString() { |
985 var t = DATE_VALUE(this); | 985 var t = DATE_VALUE(this); |
986 if (NUMBER_IS_NAN(t)) return kInvalidDate; | 986 if (NUMBER_IS_NAN(t)) return kInvalidDate; |
987 return this.getUTCFullYear() + '-' + PadInt(this.getUTCMonth() + 1, 2) + | 987 return this.getUTCFullYear() + |
988 '-' + PadInt(this.getUTCDate(), 2) + 'T' + PadInt(this.getUTCHours(), 2) + | 988 '-' + PadInt(this.getUTCMonth() + 1, 2) + |
989 ':' + PadInt(this.getUTCMinutes(), 2) + ':' + PadInt(this.getUTCSeconds(),
2) + | 989 '-' + PadInt(this.getUTCDate(), 2) + |
| 990 'T' + PadInt(this.getUTCHours(), 2) + |
| 991 ':' + PadInt(this.getUTCMinutes(), 2) + |
| 992 ':' + PadInt(this.getUTCSeconds(), 2) + |
990 '.' + PadInt(this.getUTCMilliseconds(), 3) + | 993 '.' + PadInt(this.getUTCMilliseconds(), 3) + |
991 'Z'; | 994 'Z'; |
992 } | 995 } |
993 | 996 |
994 | 997 |
995 function DateToJSON(key) { | 998 function DateToJSON(key) { |
996 return CheckJSONPrimitive(this.toISOString()); | 999 var o = ToObject(this); |
| 1000 var tv = DefaultNumber(o); |
| 1001 if (IS_NUMBER(tv) && !$isFinite(tv)) { |
| 1002 return null; |
| 1003 } |
| 1004 return o.toISOString(); |
997 } | 1005 } |
998 | 1006 |
999 | 1007 |
1000 // ------------------------------------------------------------------- | 1008 // ------------------------------------------------------------------- |
1001 | 1009 |
1002 function SetupDate() { | 1010 function SetupDate() { |
1003 // Setup non-enumerable properties of the Date object itself. | 1011 // Setup non-enumerable properties of the Date object itself. |
1004 InstallFunctions($Date, DONT_ENUM, $Array( | 1012 InstallFunctions($Date, DONT_ENUM, $Array( |
1005 "UTC", DateUTC, | 1013 "UTC", DateUTC, |
1006 "parse", DateParse, | 1014 "parse", DateParse, |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1056 "toGMTString", DateToGMTString, | 1064 "toGMTString", DateToGMTString, |
1057 "toUTCString", DateToUTCString, | 1065 "toUTCString", DateToUTCString, |
1058 "getYear", DateGetYear, | 1066 "getYear", DateGetYear, |
1059 "setYear", DateSetYear, | 1067 "setYear", DateSetYear, |
1060 "toISOString", DateToISOString, | 1068 "toISOString", DateToISOString, |
1061 "toJSON", DateToJSON | 1069 "toJSON", DateToJSON |
1062 )); | 1070 )); |
1063 } | 1071 } |
1064 | 1072 |
1065 SetupDate(); | 1073 SetupDate(); |
OLD | NEW |