@@ -169,11 +169,19 @@ ascii8 cs = BP.liftFixedToBounded $ (const cs) >$<
169{-# INLINE ascii8 #-}
169{-# INLINE ascii8 #-}
171day :: Day -> Builder
171day :: Day -> Builder
172−day dd = B.integerDec y <>
172+day dd = encodeYear y <>
173 BP.primBounded (ascii6 ('-',(mh,(ml,('-',(dh,dl)))))) ()
173 BP.primBounded (ascii6 ('-',(mh,(ml,('-',(dh,dl)))))) ()
174 where (y,m,d) = toGregorian dd
174 where (y,m,d) = toGregorian dd
175 !(T mh ml) = twoDigits m
175 !(T mh ml) = twoDigits m
176 !(T dh dl) = twoDigits d
176 !(T dh dl) = twoDigits d
178+ | y >= 1000 = B.integerDec y
180+ let (ab,c) = fromIntegral y `quotRem` 10
181+ (a,b) = ab `quotRem` 10
182+ in BP.primBounded (ascii4 ('0',(digit a,(digit b,digit c)))) ()
184+ error "Data.Aeson.Encode.Builder.day: years BCE not supported"
177{-# INLINE day #-}
185{-# INLINE day #-}
179timeOfDay :: TimeOfDay -> Builder
187timeOfDay :: TimeOfDay -> Builder