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
info1andinfo2?