GH-186: fix JSON formatting of timestamps before Unix epoch

This commit is contained in:
Jon Siwek 2018-10-12 21:30:19 +00:00
parent f05ef0cb1e
commit 70233148be
5 changed files with 44 additions and 3 deletions

View file

@ -116,7 +116,7 @@ bool JSON::Describe(ODesc* desc, Value* val, const string& name) const
{
char buffer[40];
char buffer2[40];
time_t the_time = time_t(val->val.double_val);
time_t the_time = time_t(floor(val->val.double_val));
struct tm t;
desc->AddRaw("\"", 1);
@ -133,7 +133,11 @@ bool JSON::Describe(ODesc* desc, Value* val, const string& name) const
{
double integ;
double frac = modf(val->val.double_val, &integ);
snprintf(buffer2, sizeof(buffer2), "%s.%06.0fZ", buffer, frac * 1000000);
if ( frac < 0 )
frac += 1;
snprintf(buffer2, sizeof(buffer2), "%s.%06.0fZ", buffer, fabs(frac) * 1000000);
desc->Add(buffer2);
}