diff options
author | brane <brane@13f79535-47bb-0310-9956-ffa450edef68> | 2002-06-09 20:25:51 +0000 |
---|---|---|
committer | brane <brane@13f79535-47bb-0310-9956-ffa450edef68> | 2002-06-09 20:25:51 +0000 |
commit | 528947bf76452888723f433676229ed918d9a1a3 (patch) | |
tree | 1ab0777676e1cfbdd00624b850ec8d8b6f7f3e66 /time | |
parent | 8dea3991b71c09dff85d1148d553d583646911e4 (diff) | |
download | libapr-528947bf76452888723f433676229ed918d9a1a3.tar.gz |
Fix calculation of tm_gmtoff on Windows, and add a test case.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@63485 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'time')
-rw-r--r-- | time/win32/time.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/time/win32/time.c b/time/win32/time.c index d10935829..672b683cf 100644 --- a/time/win32/time.c +++ b/time/win32/time.c @@ -105,16 +105,19 @@ static void SystemTimeToAprExpTime(apr_time_exp_t *xt, SYSTEMTIME *tm, BOOL lt) rc = GetTimeZoneInformation(&tz); switch (rc) { case TIME_ZONE_ID_UNKNOWN: - case TIME_ZONE_ID_STANDARD: xt->tm_isdst = 0; /* Bias = UTC - local time in minutes * tm_gmtoff is seconds east of UTC */ xt->tm_gmtoff = tz.Bias * -60; break; + case TIME_ZONE_ID_STANDARD: + xt->tm_isdst = 0; + xt->tm_gmtoff = (tz.Bias + tz.StandardBias) * -60; + break; case TIME_ZONE_ID_DAYLIGHT: xt->tm_isdst = 1; - xt->tm_gmtoff = tz.Bias * -60; + xt->tm_gmtoff = (tz.Bias + tz.DaylightBias) * -60; break; default: xt->tm_isdst = 0; @@ -224,8 +227,7 @@ APR_DECLARE(apr_status_t) apr_implode_gmt(apr_time_t *t, { apr_status_t status = apr_time_exp_get(t, xt); if (status == APR_SUCCESS) - *t -= (apr_time_t) (xt->tm_isdst * 3600 - + xt->tm_gmtoff) * APR_USEC_PER_SEC; + *t -= (apr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC; return status; } |