From: Rasmus Lerdorf Date: Tue, 15 Jun 1999 12:31:29 +0000 (+0000) Subject: gmmktime() fix X-Git-Tag: BEFORE_REMOVING_GC_STEP1~136 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bdbdaa4369bf21c3e7cccdfddfac4b5308af7518;p=php gmmktime() fix --- 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; }