[PLUG] Question on mktime() results
logical american
website.reader3 at gmail.com
Tue Jan 26 01:23:26 UTC 2016
To C geeks:
Could someone who has freetime on their linux system compile the
following C program and see if they can duplicate these results?
I found a strange 422 second difference between the 2 times.
mktime-discrepancy.c
-----------------------------------------
#include <time.h>
#include <stdio.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;
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);
}
More information about the PLUG
mailing list