c - Two struct tm info called by separate localtime returns the same value -


i have 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 = 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 , 8 timestamps (seconds since epoch) unsigned long passed calling function (i hardcoded here).

lines 10 , 11 concern. need obtain struct tm info of 2 timestamps i , j. basically, need month of info1 , compare against month of info2, etc.

doing prints on lines 13 25, info1 , info2 returns same value (i.e same seconds, same minutes, same hours, etc).

two questions:

  1. why have same values?
  2. how should obtain different values of info1 , info2?

localtime() -> return value points statically allocated struct might overwritten subsequent calls of date , time functions. use localtime_r() stores data in user-supplied struct.

#include <stdio.h>    #include <time.h>     int main() {       struct tm info1;                                                                                                                                             struct tm info2;      unsigned long = 100000000;       unsigned long j = 200000000;       localtime_r((time_t *) &i,&info1);        localtime_r((time_t *) &j,&info2);        printf("%s(): info1->tm_sec = %d\n", __func__, info1.tm_sec);       printf("%s(): info1->tm_min = %d\n", __func__, info1.tm_min);       printf("%s(): info1->tm_hour = %d\n", __func__, info1.tm_hour);      printf("%s(): info1->tm_mday = %d\n", __func__, info1.tm_mday);       printf("%s(): info1->tm_mon = %d\n", __func__, info1.tm_mon);       printf("%s(): info1->tm_year = %d\n", __func__, info1.tm_year);        printf("%s(): info2->tm_sec = %d\n", __func__, info2.tm_sec);      printf("%s(): info2->tm_min = %d\n", __func__, info2.tm_min);       printf("%s(): info2->tm_hour = %d\n", __func__, info2.tm_hour);       printf("%s(): info2->tm_mday = %d\n", __func__, info2.tm_mday); printf("%s(): info2->tm_mon = %d\n", __func__, info2.tm_mon);      printf("%s(): info2->tm_year = %d\n", __func__, info2.tm_year);          return 0;   } 

Comments

Popular posts from this blog

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -

node.js - Bad Request - node js ajax post -