Jest standardowa biblioteka <ctime>. Za jej pomocą możesz zawładnąć czasem :-) Pokażę Ci jak to zrobić:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
time_t czas;
tm timeinfo;
time( &czas );
localtime_s( &timeinfo, &czas );
int godzina = timeinfo.tm_hour;
int minuta = timeinfo.tm_min;
int sekunda = timeinfo.tm_sec;
int dzien = timeinfo.tm_mday;
int miesiac = timeinfo.tm_mon;
int rok = timeinfo.tm_year;
return 0;
}
Korzystanie z localtime, który ktoś polecił może być niebezpieczne. W moim środowisku Visual Studio użycie tej funkcji powoduje błąd kompilacji z komunikatem, że jest niebezpieczna w użyciu. Dlatego ja polecę Ci bezpieczniejsze rozwiązanie, którym jest localtime_s.
Różnica niby mało istotna, ale jednak się kompiluje.
Pozdrawiam :-)
PS. Użycie funkcji localtime powoduje błąd z następującym komunikatem:
error C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
Jak już uczymy się nowych rzeczy, to uczmy się nowych rzeczy takich, które zadziałają na każdym kompilatorze :-P
Podobna sytuacja jest teraz z getch(). Funkcja ta pochodzi z biblioteki <conio.h>. Ostre nawiasy sugerują, że jest to biblioteka standardowa... otóż nie. Standard języka C++ mówi o tym, że jeśli biblioteka:
Należy do standardu języka C++ to nie posiada rozszerzenie .h. Dlatego w C++ powinno się używać
<ctime> zamist <time.h>. Ta druga wersja z .h pochodzi z języka C.
<cstdlib> zamiast <stdlib.h>
<cmath> zamiast <math.h> i tak dalej...
Kontynuując moje rozważania, standard mówi jeszcze, że:
Jeśli jakaś funkcja nie należy do standardowej biblioteki języka C++, to jej nazwę rozpoczynamy znakiem '_'.
Jak wspomniałem wyżej <conio.h> to nie jest standardowa biblioteka, a getch(), to nie jest funkcja ze standardowej biblioteki. W związku z czym zgodnie ze standardem należy tę funkcję wywoływać tak: _getch();
W moim kompilatorze Visual Studio użycie getch() powoduje błąd kompilacji z następującym komunikatem:
error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch.
Czyli w skrócie: Zgodnie ze standardem języka ISO C++ należy użyć nazwy _getch().