[C++] - zamiana time_t na godziny:min:sek


(Spwmarluk) #1

Witam,

Używam biblioteki ctime, i mierzę sobie czas działania algorytmu. Mam dwie zmienne, time_t pocz, time_t kon. Oczywiście ich różnica to liczba sekund działania algorytmu. Jeśli chciałbym przedstawić wynik w ilości godzin:minut:sekund, to jest na to jakaś gotowa funkcja, czy muszę pisać własną (godziny = /3600 , minuty = /60 , itd)?


([alex]) #2

localtime() oraz asctime()


(Spwmarluk) #3

Nie wiem za bardzo, jak mam użyć tych funkcji, bo struktura tm przewiduje ilość godzin w zakresie 0 - 23. Powiedzmy, że sobie ilość dni przeliczę na godziny. Ale w takim razie dlaczego otrzymuję taki wynik ??

#include 

#include 


int main ()

{

  time_t rawtime;

  struct tm * timeinfo;

  rawtime = 6000;

  timeinfo = localtime ( &rawtime );

  printf ( "Czas: %d:%d:%d\n", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec );

  return 0;

}

Wynik:

Wydawało mi się, że 6000 sekund to 1:40:00 ...

Może ktoś sprawdzić, czy tylko u mnie tak wychodzi??


([alex]) #4

Bo masz w windows ustawioną timezone +1

Można użyć gmtime() zamiast localtime.


(Spwmarluk) #5

Miałeś racje. gmtime() pomogło. Teraz wszystko śmiga:)

#include 

#include 


int main ()

{

  time_t start,end,dif;

  struct tm * timeinfo;

  time ( &start );

  end = start + 600000;

  dif = (time_t) difftime(end,start);

  timeinfo = gmtime ( &dif );

  printf ( "Czas: %d:%02d:%02d\n", ((timeinfo->tm_yday)*24)+timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec );

  return 0;

}