Steve:

Same result, so it's not the TZ environmental variable.

#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main() {

        char pacific_timezone[8] = "PST8PDT";
        char * timezone =&pacific_timezone[0];

        // Date: November 18, 1883 12:07:01 am PST

        struct tm first_tm;
        first_tm.tm_sec = 01;
        first_tm.tm_min = 07;
        first_tm.tm_hour = 12;
        first_tm.tm_mday = 18;
        first_tm.tm_mon = 10; // November
        first_tm.tm_year = -17; // 1883
        first_tm.tm_wday = 0; // Sunday
        first_tm.tm_yday = 321;
        first_tm.tm_isdst = 0;
        first_tm.tm_gmtoff = -28800;
        first_tm.tm_zone = timezone;

        // Date: November 18, 1883 12:07:02 am PST

        struct tm second_tm;
        second_tm.tm_sec = 02;
        second_tm.tm_min = 07;
        second_tm.tm_hour = 12;
        second_tm.tm_mday = 18;
        second_tm.tm_mon = 10; // November
        second_tm.tm_year = -17; // 1883
        second_tm.tm_wday = 0; // Sunday
        second_tm.tm_yday = 321;
        second_tm.tm_isdst = 0;
        second_tm.tm_gmtoff = -28800;
        second_tm.tm_zone = timezone;

        clearenv();
        const char* TZ = "TZ";
        const char* LA = "/usr/share/zoneinfo/America/Los_Angeles";
        setenv(TZ,LA,1);
        char * gotit = getenv(TZ);
        printf( "TZ: %s\n",gotit);

        time_t first_time = mktime(&first_tm);
        time_t second_time = mktime(&second_tm);

        printf( "first struct tm object dump: %d %d %d %d %d %d %d %d %d %ld 
%s\n", first_tm.tm_sec, first_tm.tm_min, first_tm.tm_hour, first_tm.tm_mday, 
first_tm.tm_mon, first_tm.tm_year, first_tm.tm_wday, first_tm.tm_yday, 
first_tm.tm_isdst, first_tm.tm_gmtoff, first_tm.tm_zone);

        printf( "second struct tm object dump: %d %d %d %d %d %d %d %d %d %ld 
%s\n", second_tm.tm_sec, second_tm.tm_min, second_tm.tm_hour, 
second_tm.tm_mday, second_tm.tm_mon, second_tm.tm_year, second_tm.tm_wday, 
second_tm.tm_yday, second_tm.tm_isdst, second_tm.tm_gmtoff, second_tm.tm_zone);

        printf( "First time tick: %ld Second time tick: %ld Difference: %ld 
secs.  Should be -1 seconds instead.\n",first_time, second_time, 
first_time-second_time);

        printf( "Is this discrepancy due to the 7 min 2 sec difference between 
PST and Local Mean Time (Solar Time) ?\n");

        return (0);
}





-- 
CONFIDENTIAL: This email message and/or any attachments is for the sole use of 
the intended recipient(s) and may contain confidential information. Any 
unauthorized review, use, copying, dissemination, disclosure, retention or 
distribution is strictly prohibited. If you are not the intended recipient, 
please contact the sender by reply email and destroy all copies of the original 
message along with any attachments. This communication (including attachments) 
is covered by the Electronic Communication Privacy Act, U.S.C. Sections 
2510-2521.

_______________________________________________
PLUG mailing list
[email protected]
http://lists.pdxlinux.org/mailman/listinfo/plug

Reply via email to