Из doc localtime :
Возвращаемое значение указывает на внутренний объект, срок действия которого или значение которого может быть изменен любым последующим вызовом gmtime или localtime.
blockquote>
localtime()
возвращает дважды тот же указатель: вы работаете дважды по тем же данным.Тест:
printf("%p\n", localtime(&time1)); printf("%p\n", localtime(&time2));
Выход:
0x7f7d9d2eee80 0x7f7d9d2eee80