From bdbdaa4369bf21c3e7cccdfddfac4b5308af7518 Mon Sep 17 00:00:00 2001 From: Rasmus Lerdorf Date: Tue, 15 Jun 1999 12:31:29 +0000 Subject: [PATCH] gmmktime() fix --- ext/standard/datetime.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/ext/standard/datetime.c b/ext/standard/datetime.c index 82ea84bc65..1a0cfeca77 100644 --- a/ext/standard/datetime.c +++ b/ext/standard/datetime.c @@ -96,13 +96,6 @@ void _php3_mktime(INTERNAL_FUNCTION_PARAMETERS, int gm) tzset(); #endif tn = localtime(&t); - if (gm) { -#if HAVE_TM_GMTOFF - gmadjust=(tn->tm_gmtoff)/3600; -#else - gmadjust=timezone/3600; -#endif - } memcpy(&ta,tn,sizeof(struct tm)); ta.tm_isdst = -1; @@ -123,10 +116,22 @@ void _php3_mktime(INTERNAL_FUNCTION_PARAMETERS, int gm) ta.tm_min = arguments[1]->value.lval; /* fall-through */ case 1: - ta.tm_hour = arguments[0]->value.lval - gmadjust; + ta.tm_hour = arguments[0]->value.lval; case 0: break; } + t=mktime(&ta); /* Need to do this because of Daylight savings */ + tn = localtime(&t); + + if (gm) { +#if HAVE_TM_GMTOFF + gmadjust=(tn->tm_gmtoff)/3600; +#else + gmadjust=timezone/3600; +#endif + } + + ta.tm_hour+=gmadjust; return_value->value.lval = mktime(&ta); return_value->type = IS_LONG; } -- 2.50.1