@@ -8640,16 +8640,18 @@ d3_time_utc.prototype = {
86408640 getTime : function ( ) { return this . _ . getTime ( ) ; } ,
86418641 getTimezoneOffset : function ( ) { return 0 ; } ,
86428642 valueOf : function ( ) { return this . _ . valueOf ( ) ; } ,
8643- setDate : function ( x ) { this . _ . setUTCDate ( x ) ; } ,
8644- setDay : function ( x ) { this . _ . setUTCDay ( x ) ; } ,
8645- setFullYear : function ( x ) { this . _ . setUTCFullYear ( x ) ; } ,
8646- setHours : function ( x ) { this . _ . setUTCHours ( x ) ; } ,
8647- setMilliseconds : function ( x ) { this . _ . setUTCMilliseconds ( x ) ; } ,
8648- setMinutes : function ( x ) { this . _ . setUTCMinutes ( x ) ; } ,
8649- setMonth : function ( x ) { this . _ . setUTCMonth ( x ) ; } ,
8650- setSeconds : function ( x ) { this . _ . setUTCSeconds ( x ) ; } ,
8651- setTime : function ( x ) { this . _ . setTime ( x ) ; }
8652- } ;
8643+ setDate : function ( ) { d3_time_prototype . setUTCDate . apply ( this . _ , arguments ) ; } ,
8644+ setDay : function ( ) { d3_time_prototype . setUTCDay . apply ( this . _ , arguments ) ; } ,
8645+ setFullYear : function ( ) { d3_time_prototype . setUTCFullYear . apply ( this . _ , arguments ) ; } ,
8646+ setHours : function ( ) { d3_time_prototype . setUTCHours . apply ( this . _ , arguments ) ; } ,
8647+ setMilliseconds : function ( ) { d3_time_prototype . setUTCMilliseconds . apply ( this . _ , arguments ) ; } ,
8648+ setMinutes : function ( ) { d3_time_prototype . setUTCMinutes . apply ( this . _ , arguments ) ; } ,
8649+ setMonth : function ( ) { d3_time_prototype . setUTCMonth . apply ( this . _ , arguments ) ; } ,
8650+ setSeconds : function ( ) { d3_time_prototype . setUTCSeconds . apply ( this . _ , arguments ) ; } ,
8651+ setTime : function ( ) { d3_time_prototype . setTime . apply ( this . _ , arguments ) ; }
8652+ } ;
8653+
8654+ var d3_time_prototype = Date . prototype ;
86538655d3 . time . format = function ( template ) {
86548656 var n = template . length ;
86558657
@@ -8673,15 +8675,16 @@ d3.time.format = function(template) {
86738675 }
86748676
86758677 format . parse = function ( string ) {
8676- var date = new d3_time ( 1900 , 0 , 1 ) ,
8677- i = d3_time_parse ( date , template , string , 0 ) ;
8678+ var d = { y : 1900 , m : 0 , d : 1 , H : 0 , M : 0 , S : 0 , L : 0 } ,
8679+ i = d3_time_parse ( d , template , string , 0 ) ;
86788680 if ( i != string . length ) return null ;
8679- if ( date . hour12 ) {
8680- var hours = date . getHours ( ) % 12 ;
8681- date . setHours ( date . hour12pm ? hours + 12 : hours ) ;
8682- }
8683- delete date . hour12 ;
8684- delete date . hour12pm ;
8681+
8682+ // The am-pm flag is 0 for AM, and 1 for PM.
8683+ if ( "p" in d ) d . H = d . H % 12 + d . p * 12 ;
8684+
8685+ var date = new d3_time ( ) ;
8686+ date . setFullYear ( d . y , d . m , d . d ) ;
8687+ date . setHours ( d . H , d . M , d . S , d . L ) ;
86858688 return date ;
86868689 } ;
86878690
@@ -8752,7 +8755,7 @@ var d3_time_parsers = {
87528755 d : d3_time_parseDay ,
87538756 e : d3_time_parseDay ,
87548757 H : d3_time_parseHour24 ,
8755- I : d3_time_parseHour12 ,
8758+ I : d3_time_parseHour24 ,
87568759 // j: function(d, s, i) { /*TODO day of year [001,366] */ return i; },
87578760 L : d3_time_parseMilliseconds ,
87588761 m : d3_time_parseMonthNumber ,
@@ -8789,7 +8792,7 @@ var d3_time_weekdayAbbrevRe = /^(?:sun|mon|tue|wed|thu|fri|sat)/i,
87898792
87908793function d3_time_parseMonthAbbrev ( date , string , i ) {
87918794 var n = d3_time_monthAbbrevLookup . get ( string . substring ( i , i += 3 ) . toLowerCase ( ) ) ;
8792- return n == null ? - 1 : ( date . setMonth ( n ) , i ) ;
8795+ return n == null ? - 1 : ( date . m = n , i ) ;
87938796}
87948797
87958798var d3_time_monthAbbrevLookup = d3 . map ( {
@@ -8810,7 +8813,7 @@ var d3_time_monthAbbrevLookup = d3.map({
88108813function d3_time_parseMonth ( date , string , i ) {
88118814 d3_time_monthRe . lastIndex = 0 ;
88128815 var n = d3_time_monthRe . exec ( string . substring ( i , i + 12 ) ) ;
8813- return n ? ( date . setMonth ( d3_time_monthLookup . get ( n [ 0 ] . toLowerCase ( ) ) ) , i += n [ 0 ] . length ) : - 1 ;
8816+ return n ? ( date . m = d3_time_monthLookup . get ( n [ 0 ] . toLowerCase ( ) ) , i += n [ 0 ] . length ) : - 1 ;
88148817}
88158818
88168819var d3_time_monthRe = / ^ (?: J a n u a r y | F e b r u a r y | M a r c h | A p r i l | M a y | J u n e | J u l y | A u g u s t | S e p t e m b e r | O c t o b e r | N o v e m b e r | D e c e m b e r ) / ig;
@@ -8860,13 +8863,13 @@ function d3_time_parseLocaleTime(date, string, i) {
88608863function d3_time_parseFullYear ( date , string , i ) {
88618864 d3_time_numberRe . lastIndex = 0 ;
88628865 var n = d3_time_numberRe . exec ( string . substring ( i , i + 4 ) ) ;
8863- return n ? ( date . setFullYear ( n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8866+ return n ? ( date . y = + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
88648867}
88658868
88668869function d3_time_parseYear ( date , string , i ) {
88678870 d3_time_numberRe . lastIndex = 0 ;
88688871 var n = d3_time_numberRe . exec ( string . substring ( i , i + 2 ) ) ;
8869- return n ? ( date . setFullYear ( d3_time_century ( ) + + n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8872+ return n ? ( date . y = d3_time_century ( ) + + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
88708873}
88718874
88728875function d3_time_century ( ) {
@@ -8876,52 +8879,46 @@ function d3_time_century() {
88768879function d3_time_parseMonthNumber ( date , string , i ) {
88778880 d3_time_numberRe . lastIndex = 0 ;
88788881 var n = d3_time_numberRe . exec ( string . substring ( i , i + 2 ) ) ;
8879- return n ? ( date . setMonth ( n [ 0 ] - 1 ) , i += n [ 0 ] . length ) : - 1 ;
8882+ return n ? ( date . m = n [ 0 ] - 1 , i += n [ 0 ] . length ) : - 1 ;
88808883}
88818884
88828885function d3_time_parseDay ( date , string , i ) {
88838886 d3_time_numberRe . lastIndex = 0 ;
88848887 var n = d3_time_numberRe . exec ( string . substring ( i , i + 2 ) ) ;
8885- return n ? ( date . setDate ( + n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8888+ return n ? ( date . d = + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
88868889}
88878890
8888- // Note: we don't validate that the hour is in the range [0,23].
8891+ // Note: we don't validate that the hour is in the range [0,23] or [1,12] .
88898892function d3_time_parseHour24 ( date , string , i ) {
88908893 d3_time_numberRe . lastIndex = 0 ;
88918894 var n = d3_time_numberRe . exec ( string . substring ( i , i + 2 ) ) ;
8892- return n ? ( date . setHours ( + n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8893- }
8894-
8895- // Note: we don't validate that the hour is in the range [1,12].
8896- function d3_time_parseHour12 ( date , string , i ) {
8897- date . hour12 = true ;
8898- return d3_time_parseHour24 ( date , string , i ) ;
8895+ return n ? ( date . H = + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
88998896}
89008897
89018898function d3_time_parseMinutes ( date , string , i ) {
89028899 d3_time_numberRe . lastIndex = 0 ;
89038900 var n = d3_time_numberRe . exec ( string . substring ( i , i + 2 ) ) ;
8904- return n ? ( date . setMinutes ( + n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8901+ return n ? ( date . M = + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
89058902}
89068903
89078904function d3_time_parseSeconds ( date , string , i ) {
89088905 d3_time_numberRe . lastIndex = 0 ;
89098906 var n = d3_time_numberRe . exec ( string . substring ( i , i + 2 ) ) ;
8910- return n ? ( date . setSeconds ( + n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8907+ return n ? ( date . S = + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
89118908}
89128909
89138910function d3_time_parseMilliseconds ( date , string , i ) {
89148911 d3_time_numberRe . lastIndex = 0 ;
89158912 var n = d3_time_numberRe . exec ( string . substring ( i , i + 3 ) ) ;
8916- return n ? ( date . setMilliseconds ( + n [ 0 ] ) , i += n [ 0 ] . length ) : - 1 ;
8913+ return n ? ( date . L = + n [ 0 ] , i += n [ 0 ] . length ) : - 1 ;
89178914}
89188915
89198916// Note: we don't look at the next directive.
89208917var d3_time_numberRe = / \s * \d + / ;
89218918
89228919function d3_time_parseAmPm ( date , string , i ) {
89238920 var n = d3_time_amPmLookup . get ( string . substring ( i , i += 2 ) . toLowerCase ( ) ) ;
8924- return n == null ? - 1 : ( date . hour12pm = n , i ) ;
8921+ return n == null ? - 1 : ( date . p = n , i ) ;
89258922}
89268923
89278924var d3_time_amPmLookup = d3 . map ( {
0 commit comments