@@ -147,7 +147,7 @@ func parseByteDateTime(b []byte, loc *time.Location) (time.Time, error) {
147
147
return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [4 ])
148
148
}
149
149
150
- m , err := parseByte2Digits (b , 5 )
150
+ m , err := parseByte2Digits (b [ 5 ], b [ 6 ] )
151
151
if err != nil {
152
152
return time.Time {}, err
153
153
}
@@ -160,7 +160,7 @@ func parseByteDateTime(b []byte, loc *time.Location) (time.Time, error) {
160
160
return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [7 ])
161
161
}
162
162
163
- day , err := parseByte2Digits (b , 8 )
163
+ day , err := parseByte2Digits (b [ 8 ], b [ 9 ] )
164
164
if err != nil {
165
165
return time.Time {}, err
166
166
}
@@ -175,23 +175,23 @@ func parseByteDateTime(b []byte, loc *time.Location) (time.Time, error) {
175
175
return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [10 ])
176
176
}
177
177
178
- hour , err := parseByte2Digits (b , 11 )
178
+ hour , err := parseByte2Digits (b [ 11 ], b [ 12 ] )
179
179
if err != nil {
180
180
return time.Time {}, err
181
181
}
182
182
if b [13 ] != ':' {
183
183
return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [13 ])
184
184
}
185
185
186
- min , err := parseByte2Digits (b , 14 )
186
+ min , err := parseByte2Digits (b [ 14 ], b [ 15 ] )
187
187
if err != nil {
188
188
return time.Time {}, err
189
189
}
190
190
if b [16 ] != ':' {
191
191
return time.Time {}, fmt .Errorf ("bad value for field: `%c`" , b [16 ])
192
192
}
193
193
194
- sec , err := parseByte2Digits (b , 17 )
194
+ sec , err := parseByte2Digits (b [ 17 ], b [ 18 ] )
195
195
if err != nil {
196
196
return time.Time {}, err
197
197
}
@@ -217,22 +217,22 @@ func parseByteYear(b []byte) (int, error) {
217
217
for i := 0 ; i < 4 ; i ++ {
218
218
v , err := bToi (b [i ])
219
219
if err != nil {
220
- return 0 , fmt . Errorf ( "invalid time bytes: %s" , b )
220
+ return 0 , err
221
221
}
222
222
year += v * n
223
223
n = n / 10
224
224
}
225
225
return year , nil
226
226
}
227
227
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 )
230
230
if err != nil {
231
- return 0 , fmt . Errorf ( "invalid time bytes: %s" , b )
231
+ return 0 , err
232
232
}
233
- d1 , err := bToi (b [ index + 1 ] )
233
+ d1 , err := bToi (b2 )
234
234
if err != nil {
235
- return 0 , fmt . Errorf ( "invalid time bytes: %s" , b )
235
+ return 0 , err
236
236
}
237
237
return d2 * 10 + d1 , nil
238
238
}
@@ -248,7 +248,7 @@ func parseByteNanoSec(b []byte) (int, error) {
248
248
ns += v * digit
249
249
digit /= 10
250
250
}
251
- // nanoseconds has 10-digits.
251
+ // nanoseconds has 10-digits. (needs to scale digits)
252
252
// 10 - 6 = 4, so we have to multiple 1000.
253
253
return ns * 1000 , nil
254
254
}
0 commit comments