From 0c07adf3290c15647d958fd42524929224bd3b39 Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Mon, 8 Oct 2012 14:12:49 -0400 Subject: [PATCH] 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 --- Open-ILS/src/c-apps/oils_sql.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Open-ILS/src/c-apps/oils_sql.c b/Open-ILS/src/c-apps/oils_sql.c index c9c1618dc0..5c93b296f6 100644 --- a/Open-ILS/src/c-apps/oils_sql.c +++ b/Open-ILS/src/c-apps/oils_sql.c @@ -6436,10 +6436,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 )); @@ -6522,10 +6522,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 )); -- 2.43.2