I have this test code:
1 #include <stdio.h>
2 #include <time.h>
3
4 int main() {
5 struct tm *info1;
6 struct tm *info2;
7 unsigned long i = 100000000;
8 unsigned long j = 200000000;
9
10 info1 = localtime((time_t *) &i);
11 info2 = localtime((time_t *) &j);
12
13 printf("%s(): info1->tm_sec = %d\n", __func__, info1->tm_sec);
14 printf("%s(): info1->tm_min = %d\n", __func__, info1->tm_min);
15 printf("%s(): info1->tm_hour = %d\n", __func__, info1->tm_hour);
16 printf("%s(): info1->tm_mday = %d\n", __func__, info1->tm_mday);
17 printf("%s(): info1->tm_mon = %d\n", __func__, info1->tm_mon);
18 printf("%s(): info1->tm_year = %d\n", __func__, info1->tm_year);
19
20 printf("%s(): info2->tm_sec = %d\n", __func__, info2->tm_sec);
21 printf("%s(): info2->tm_min = %d\n", __func__, info2->tm_min);
22 printf("%s(): info2->tm_hour = %d\n", __func__, info2->tm_hour);
23 printf("%s(): info2->tm_mday = %d\n", __func__, info2->tm_mday);
24 printf("%s(): info2->tm_mon = %d\n", __func__, info2->tm_mon);
25 printf("%s(): info2->tm_year = %d\n", __func__, info2->tm_year);
26
27
28
29 return 0;
30 }
The output is:
main(): info1->tm_sec = 20
main(): info1->tm_min = 33
main(): info1->tm_hour = 3
main(): info1->tm_mday = 4
main(): info1->tm_mon = 4
main(): info1->tm_year = 76
main(): info2->tm_sec = 20
main(): info2->tm_min = 33
main(): info2->tm_hour = 3
main(): info2->tm_mday = 4
main(): info2->tm_mon = 4
main(): info2->tm_year = 76
Lines 7 and 8 are actually timestamps (seconds since Epoch) as unsigned long passed from a calling function (I just hardcoded it here).
Lines 10 and 11 is my concern. I need to obtain the struct tm
info of the two timestamps i
and j
. Basically, I need to get the month of info1
and compare it against the month of info2
, etc.
Doing the prints on Lines 13 to 25, info1
and info2
returns the same value (i.e same seconds, same minutes, same hours, etc).
Two questions:
- Why do they have the same values?
- How should I obtain different values of
info1
andinfo2
?