gmmktime() fix
authorRasmus Lerdorf <rasmus@php.net>
Tue, 15 Jun 1999 12:31:29 +0000 (12:31 +0000)
committerRasmus Lerdorf <rasmus@php.net>
Tue, 15 Jun 1999 12:31:29 +0000 (12:31 +0000)
ext/standard/datetime.c

index 82ea84bc657cd464ec50f4c68835d7833f1cddc3..1a0cfeca77e6db1d89dd720669a115292a44cccc 100644 (file)
@@ -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;
 }