diff options
author | Nikias Bassen | 2014-04-01 17:37:13 +0200 |
---|---|---|
committer | Nikias Bassen | 2014-04-01 17:37:13 +0200 |
commit | 56cd0e80dd7c812ae6f55e8fa8190a439c1ddf47 (patch) | |
tree | c6064cafaf12840fda8e01444665cd7980b54fdd /src | |
parent | 81cdd79417faff2eb36b6b0b1b0b7660976de444 (diff) | |
download | libplist-56cd0e80dd7c812ae6f55e8fa8190a439c1ddf47.tar.gz libplist-56cd0e80dd7c812ae6f55e8fa8190a439c1ddf47.tar.bz2 |
xplist: Fix timezone-bound date/time conversion
Diffstat (limited to 'src')
-rw-r--r-- | src/xplist.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/xplist.c b/src/xplist.c index 653cf49..405a844 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -223,7 +223,7 @@ static void node_to_xml(node_t* node, void *xml_struct) tag = XPLIST_DATE; { time_t time = (time_t)node_data->timeval.tv_sec; - struct tm *btime = localtime(&time); + struct tm *btime = gmtime(&time); if (btime) { val = (char*)malloc(24); memset(val, 0, 24); @@ -398,8 +398,11 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node) time_t time = 0; if (strlen((const char*)strval) >= 11) { struct tm btime; + struct tm* tm_utc; parse_date((const char*)strval, &btime); time = mktime(&btime); + tm_utc = gmtime(&time); + time -= (mktime(tm_utc) - time); } data->timeval.tv_sec = (long)time; data->timeval.tv_usec = 0; |