From: Mike Rylander Date: Mon, 8 Oct 2012 18:12:49 +0000 (-0400) Subject: Be more strict about dates we generate X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=63fcae2a0961ee9e0a4b516b678daccf9f7c9fc3;p=working%2FEvergreen.git Be more strict about dates we generate ISO-8601 dates must have a 4-character year component, however strftime does not left-pad years to 4 characters when the century is one character long even though the man page for strftime(3) suggests otherwise: %F Equivalent to %Y-%m-%d (the ISO 8601 date format). (C99) This makes stricter ISO-8601 parsers, such as Perl's DateTime module, unhappy. So, we'll do it ourselves using the glibc extensions available to strftime for specifying a padding character and desired length. Signed-off-by: Mike Rylander Signed-off-by: Lebbeous Fogle-Weekley --- diff --git a/Open-ILS/src/c-apps/oils_sql.c b/Open-ILS/src/c-apps/oils_sql.c index 902a4e04c2..9f0f27a579 100644 --- a/Open-ILS/src/c-apps/oils_sql.c +++ b/Open-ILS/src/c-apps/oils_sql.c @@ -6428,10 +6428,10 @@ static jsonObject* oilsMakeFieldmapperFromResult( dbi_result result, osrfHash* m strftime( dt_string, sizeof( dt_string ), "%T", &gmdt ); } else if( !( attr & DBI_DATETIME_TIME )) { localtime_r( &_tmp_dt, &gmdt ); - strftime( dt_string, sizeof( dt_string ), "%F", &gmdt ); + strftime( dt_string, sizeof( dt_string ), "%04Y-%m-%d", &gmdt ); } else { localtime_r( &_tmp_dt, &gmdt ); - strftime( dt_string, sizeof( dt_string ), "%FT%T%z", &gmdt ); + strftime( dt_string, sizeof( dt_string ), "%04Y-%m-%dT%T%z", &gmdt ); } jsonObjectSetIndex( object, fmIndex, jsonNewObject( dt_string )); @@ -6514,10 +6514,10 @@ static jsonObject* oilsMakeJSONFromResult( dbi_result result ) { strftime( dt_string, sizeof( dt_string ), "%T", &gmdt ); } else if( !( attr & DBI_DATETIME_TIME )) { localtime_r( &_tmp_dt, &gmdt ); - strftime( dt_string, sizeof( dt_string ), "%F", &gmdt ); + strftime( dt_string, sizeof( dt_string ), "%04Y-%m-%d", &gmdt ); } else { localtime_r( &_tmp_dt, &gmdt ); - strftime( dt_string, sizeof( dt_string ), "%FT%T%z", &gmdt ); + strftime( dt_string, sizeof( dt_string ), "%04Y-%m-%dT%T%z", &gmdt ); } jsonObjectSetKey( object, columnName, jsonNewObject( dt_string ));