Execute the following
Oj.default_options = Oj.default_options.merge(mode: :compat, time_format: :xmlschema, second_precision: 3)
and you will get back 2013-01-31T22:38:28.1000+00:0.
Notice how the milliseconds are being rounded up to 1000 but do not overflow into the next second. Instead it reads .1000 even though the precision asked for is just 3 digits. This also cuts off the last digit of the timezone offset part.
You'd think this is an edge case but it actually just happened today in production.
I'll get it fixed. I don't believe in ignoring edge cases anyway but this is not an edge case.
Glad to hear that. Thanks for looking into it Peter.
I checked in the fix and it is ready for release as soon as rubygems is back on line. Until then pull from github.
Please take a look and let me know if it fixes the problem for you.
Yes, 2.0.3 fixes it. Many thanks!