@@ -147,7 +147,7 @@ func parseByteDateTime(b []byte, loc *time.Location) (time.Time, error) {
147147 return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [4 ])
148148 }
149149
150- m , err := parseByte2Digits (b , 5 )
150+ m , err := parseByte2Digits (b [ 5 ], b [ 6 ] )
151151 if err != nil {
152152 return time.Time {}, err
153153 }
@@ -160,7 +160,7 @@ func parseByteDateTime(b []byte, loc *time.Location) (time.Time, error) {
160160 return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [7 ])
161161 }
162162
163- day , err := parseByte2Digits (b , 8 )
163+ day , err := parseByte2Digits (b [ 8 ], b [ 9 ] )
164164 if err != nil {
165165 return time.Time {}, err
166166 }
@@ -175,23 +175,23 @@ func parseByteDateTime(b []byte, loc *time.Location) (time.Time, error) {
175175 return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [10 ])
176176 }
177177
178- hour , err := parseByte2Digits (b , 11 )
178+ hour , err := parseByte2Digits (b [ 11 ], b [ 12 ] )
179179 if err != nil {
180180 return time.Time {}, err
181181 }
182182 if b [13 ] != ':' {
183183 return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [13 ])
184184 }
185185
186- min , err := parseByte2Digits (b , 14 )
186+ min , err := parseByte2Digits (b [ 14 ], b [ 15 ] )
187187 if err != nil {
188188 return time.Time {}, err
189189 }
190190 if b [16 ] != ':' {
191191 return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [16 ])
192192 }
193193
194- sec , err := parseByte2Digits (b , 17 )
194+ sec , err := parseByte2Digits (b [ 17 ], b [ 18 ] )
195195 if err != nil {
196196 return time.Time {}, err
197197 }
@@ -217,22 +217,22 @@ func parseByteYear(b []byte) (int, error) {
217217 for i := 0 ; i < 4 ; i ++ {
218218 v , err := bToi (b [i ])
219219 if err != nil {
220- return 0 , fmt . Errorf ( "invalid time bytes: %s" , b )
220+ return 0 , err
221221 }
222222 year += v * n
223223 n = n / 10
224224 }
225225 return year , nil
226226}
227227
228- func parseByte2Digits (b [] byte , index int ) (int , error ) {
229- d2 , err := bToi (b [ index ] )
228+ func parseByte2Digits (b1 , b2 byte ) (int , error ) {
229+ d2 , err := bToi (b1 )
230230 if err != nil {
231- return 0 , fmt . Errorf ( "invalid time bytes: %s" , b )
231+ return 0 , err
232232 }
233- d1 , err := bToi (b [ index + 1 ] )
233+ d1 , err := bToi (b2 )
234234 if err != nil {
235- return 0 , fmt . Errorf ( "invalid time bytes: %s" , b )
235+ return 0 , err
236236 }
237237 return d2 * 10 + d1 , nil
238238}
@@ -248,7 +248,7 @@ func parseByteNanoSec(b []byte) (int, error) {
248248 ns += v * digit
249249 digit /= 10
250250 }
251- // nanoseconds has 10-digits.
251+ // nanoseconds has 10-digits. (needs to scale digits)
252252 // 10 - 6 = 4, so we have to multiple 1000.
253253 return ns * 1000 , nil
254254}
0 commit comments