x-kom hosting

[C++]biblioteka ctime-wyświetlanie czasu i odliczanie.

smakowy155
utworzono
utworzono

Mam problem, bo nie wiem jak korzystać z biblioteki ctime. Nie mogłem nigdzie znaleść przykładów. Otóż chodzi mi o to, żeby na przykład wyświetlić aktualna godzinę i żeby odliczał czas.

Nie chodzi mi o jakiegoś gotowca tylko jak to się robi.

wojtex5
komentarz
komentarz (edytowane)

ja korzystałem z funkcji time i ctime
[code]
#include <ctime>
//...
time_t czas; //tworzenie zmiennej przechowującej czas
time(&czas); //pobranie do niej czasu
std::cout<<ctime(&czas)<<"\n"; //przetworzenie czasu funkcją ctime na ciąg znaków char
[/code]

ciąg znaków wygląda tak: [code]
[skrót dnia tygodnia ang.] [skrót miesiąca ang] [dzień(liczba)] [godzina w formacie 24h]:[minuta]:[sekunda] [rok][/code] (oczywiście wartości są bez nawiasów...
no i godzinę, minutę, sekundę można łatwo pozyskać, choćby pobierając je do ciągu znaków char i później atoi albo strumienie napisowe (ew. własna funkcja)
oczywiście na podstawie takiej, że wszystkie te wartości mają stałą długość:
skrót nazwy dnia tygodnia: 3 litery
skrót nazwy miesiąca: 3 litery
dzień jest (chyba) z zerami wiodącymi, więc zawsze 2 cyfry
godzina,minuta, sekunda po 2 cyfry (rozdzielone dwukropkami)
i rok: 4 cyfry

smakowy155
komentarz
komentarz

Jak pozyskac same sekundy, minuty, godziny?

wojtex5
komentarz
komentarz

jednym ze sposobów jest użycie funkcji atoi odziedziczonej z C
[code]
time_t czas; //tworzenie zmiennej przechowującej czas
time(&czas); //pobranie do niej czasu
char godzina[3],minuta[3],sekunda[3]; //po 3, bo trzeba pomieścić znak \0
char*c_czas = ctime(&czas);
godzina[0]=c_czas[11];
godzina[1]=c_czas[12];
minuta[0]=c_czas[14]; //przeskoczenie dwukropka
minuta[1]=c_czas[15];
sekunda[0]=c_czas[17];//przeskoczenie 2. dwukropka
sekunda[1]=c_czas[18];
int gdz,min,sek;
gdz = atoi(godzina);
min = atoi(minuta);
sek = atoi(sekunda);
printf("aktualna godzina: %d:%d:%d\n",gdz,min,sek);
//...
[/code]

drugim sposobem jest użycie strumieni napisowych.
strumienie napisowe są dostępne po dołączeniu biblioteki <sstream> (rozwijając skrót StringStream)

[code]
#include <sstream> //dołączenie strumieni napisowych
#include <string> //dołączenie klasy napisów (w stylu C++ dla odróżnienia)
#include <ctime>
//...
time_t czas; //tworzenie zmiennej przechowującej czas
time(&czas); //pobranie do niej czasu
std::string s_czas(ctime(&czas));
std::stringstream F;
F<<s_czas[11]<<s_czas[12]<<" "<<s_czas[14]<<s_czas[15]<<" "<<s_czas[17]<<s_czas[18];
int gdz,min,sek;
F>>gdz>>min>>sek;
//i już masz w zmiennych gdz, min, sek odpowiednie wartości.
std::cout<<"aktualna godzina: "<<gdz<<":"<<min<<":"<<sek;
//...
[/code]

smakowy155
komentarz
komentarz

Aha. Dzięki. I jeszcze jak zrobić 'zamrożenie' programu na np 2 sekundy.

tom300
komentarz
komentarz

[code]Sleep(2000);[/code]
Zatrzymuje na 2 sekundy.

smakowy155
komentarz
komentarz (edytowane)

Nie działa mi funkcja sleep

new_user
komentarz
komentarz

[quote name='smakowy155' timestamp='1292750189' post='1145458']
Nie działa mi funkcja sleep
[/quote]

[code]
Sleep nie sleep
[/code]

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.