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 /lib | |
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 | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/util.cc b/lib/util.cc index e5ca62d..ee75d29 100644 --- a/lib/util.cc +++ b/lib/util.cc @@ -114,22 +114,32 @@ namespace opkele { } 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 + ) && ( sscanf( w.c_str(), - "%04d-%02d-%02dT%02d:%02d:%02dZ", + "%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 - ) != 6 ) + &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; } /* |