gcc (GCC) 4.7.2
c89
Здравствуйте,Получение разницы во времени между двумя различными временами
Я разработал образец программы, которая должна получить разницу между временем начала и окончания. Затем я использую секунды, чтобы рассчитать, сколько дней прошло между этими 2 раза.
Это приложение для регистрации, которое после указанного пользователем количества дней. Журналы будут перевернуты, и будет установлено новое время начала. Пользователь может решить, сколько дней журнал будет заменен.
Я добавил небольшой сон, чтобы получить общую идею, но обычно это будет регистрироваться в течение нескольких дней.
Это лучший и самый портативный (linux/windows) способ сделать это? Любые потенциальные ошибки в этом дизайне?
Большое спасибо за любые предложения,
#include <time.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
time_t start_timestamp;
time_t end_timestamp;
struct tm time_days;
double seconds = 0;
size_t cumulative_days = 0;
#define FORMAT_TIME_SIZE 64
char format_time[FORMAT_TIME_SIZE];
#define DAY 3600 /* Seconds in one day */
#define MAX_DAYS 10 /* Roll over log after 10 days */
/* Current time of starting application */
time(&start_timestamp);
time_days = *localtime(&start_timestamp);
/* Print the current time at the start */
memset(format_time, 0, sizeof format_time);
strftime(format_time, sizeof format_time, "%c", &time_days);
printf("timestamp start [ %s ]\n", format_time);
/* Simulate a simple sleep. This could be logging for many days */
sleep(10);
/* Current time after delay print the results */
time(&end_timestamp);
time_days = *localtime(&end_timestamp);
memset(format_time, 0, sizeof format_time);
strftime(format_time, sizeof format_time, "%c", &time_days);
printf("timestamp end [ %s ]\n", format_time);
/* Get the current difference in seconds */
seconds = difftime(end_timestamp, start_timestamp);
printf("Seconds elapsed [ %f ]\n", seconds);
/* Calculate how many days have elapsed */
cumulative_days = DAY * seconds;
/* What are we going to do */
if(cumulative_days <= MAX_DAYS) {
printf("Delete log and start over\n");
}
else {
printf("Not there yet, keep appending the current log\n");
}
return 0;
}
Должно быть на [Code Review] (http://codereview.stackexchange.com/), я думаю. – Kninnug