author | Michael Krelin <hacker@klever.net> | 2007-12-29 21:10:48 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-01-04 18:21:38 (UTC) |
commit | ff04188567b117c28d54d6f81a9dca40ff0b1730 (patch) (side-by-side diff) | |
tree | 80fe40af5c38a35f7cdfec710a6eb937fd14be88 | |
parent | e429f672f681953cd3f9390482090e8f03cf2b45 (diff) | |
download | libopkele-ff04188567b117c28d54d6f81a9dca40ff0b1730.zip libopkele-ff04188567b117c28d54d6f81a9dca40ff0b1730.tar.gz libopkele-ff04188567b117c28d54d6f81a9dca40ff0b1730.tar.bz2 |
adjust w3c_to_time output by timezone, so that it returns local time
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | lib/util.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/util.cc b/lib/util.cc index e5ca62d..ee75d29 100644 --- a/lib/util.cc +++ b/lib/util.cc @@ -109,32 +109,42 @@ namespace opkele { throw failed_conversion(OPKELE_CP_ "failed to BN_dec2bn()"); char rv[25]; if(!strftime(rv,sizeof(rv)-1,"%Y-%m-%dT%H:%M:%SZ",&tm_t)) throw failed_conversion(OPKELE_CP_ "failed to strftime()"); return rv; } time_t w3c_to_time(const string& w) { + int fraction; struct tm tm_t; memset(&tm_t,0,sizeof(tm_t)); - if( + if( ( sscanf( w.c_str(), "%04d-%02d-%02dT%02d:%02d:%02dZ", &tm_t.tm_year,&tm_t.tm_mon,&tm_t.tm_mday, &tm_t.tm_hour,&tm_t.tm_min,&tm_t.tm_sec - ) != 6 ) + ) != 6 + ) && ( + sscanf( + w.c_str(), + "%04d-%02d-%02dT%02d:%02d:%02d.%03dZ", + &tm_t.tm_year,&tm_t.tm_mon,&tm_t.tm_mday, + &tm_t.tm_hour,&tm_t.tm_min,&tm_t.tm_sec, + &fraction + ) != 7 + ) ) throw failed_conversion(OPKELE_CP_ "failed to sscanf()"); tm_t.tm_mon--; tm_t.tm_year-=1900; time_t rv = mktime(&tm_t); if(rv==(time_t)-1) throw failed_conversion(OPKELE_CP_ "failed to mktime()"); - return rv; + return rv-timezone; } /* * */ string url_encode(const string& str) { char * t = curl_escape(str.c_str(),str.length()); |