Co to jest czas (NULL) W C?
Poznaję kilka podstawowych funkcji C i napotkałem time(NULL)
w niektórych podręcznikach.
8 answers
Możesz przekazać wskaźnik do time_t
obiektu, który time
wypełni się bieżącym czasem(a wartość zwracana jest taka sama, na którą wskazałeś). Jeśli przechodzisz NULL
, po prostu go ignoruje i zwraca tylko nowy obiekt time_t
, który reprezentuje bieżący czas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-26 03:02:00
Wywołanie time(NULL)
zwraca bieżący czas kalendarzowy (sekundy od 1 stycznia 1970). Zobacz ten odnośnik Po szczegóły. Zwykle, jeśli przekazujesz wskaźnik do time_t
zmienna , ta zmienna wskaże bieżący czas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 12:45:03
[odpowiedź skopiowana z duplikatu , teraz-usunięte pytanie .]
time()
to bardzo stara funkcja. Sięga czasów, kiedy Język C nie miał nawet typu long
. Dawno, dawno temu, jedynym sposobem na uzyskanie czegoś w rodzaju 32-bitowego typu było użycie tablicy dwóch int
s -- i wtedy int
s były 16-bitowe.
Więc zadzwoniłeś
int now[2];
time(now);
I wypełniał 32-bitowy czas do now[0]
i now[1]
, 16 bitów na raz. (To wyjaśnia dlaczego druga funkcje związane z czasem, takie jak localtime
i ctime
, zwykle akceptują swoje argumenty czasowe za pomocą wskaźników.)
Później, dmr zakończył dodawanie long
do kompilatora, więc możesz zacząć mówić
long now;
time(&now);
Później, ktoś zdał sobie sprawę, że byłoby przydatne, gdyby time()
poszedł naprzód i zwrócił wartość, a nie tylko wypełniając ją za pomocą wskaźnika. Ale -- wsteczna kompatybilność jest cudowną rzeczą -- na korzyść całego kodu, który wciąż robił time(&now)
, time()
funkcja musiała podtrzymywać argument wskaźnika. Dlatego-i dlatego kompatybilność wsteczna nie zawsze jest tak cudowna - jeśli używasz zwracanej wartości, nadal musisz podać NULL jako wskaźnik: {]}
long now = time(NULL);
(później, oczywiście, zaczęliśmy używać time_t
zamiast zwykłego long
Dla razy, tak, że na przykład, można go zmienić na typ 64-bitowy, unikając problemu y2.038k.)
[P. S. Nie jestem pewien czy zmiana z int [2]
na long
, a zmiana dodawania wartości zwracanej miała miejsce w różnych momentach; mogły mieć miejsce w tym samym czasie. Ale zauważ, że gdy czas był reprezentowany jako tablica, to miał być wypełniony przez wskaźnik, nie mógł być zwrócony jako wartość, ponieważ oczywiście funkcje C nie mogą zwracać tablic.]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-06 22:08:10
Funkcja time
zwraca bieżący czas (jako wartość time_t
) w sekundach od pewnego punktu (w systemach uniksowych, od północy UTC 1 stycznia 1970) i zajmuje jeden argument, wskaźnik time_t
, w którym przechowywany jest czas. Podanie NULL
jako argumentu powoduje, że time
zwraca czas jako normalną wartość zwracaną, ale nie przechowuje go nigdzie indziej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-26 03:02:22
Time
: zwraca czas, jaki upłynął w sekundach od epoki 1 Jan 1970
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-26 03:04:26
int main (void)
{
//print time in seconds from 1 Jan 1970 using c
float n = time(NULL);
printf("%.2f\n" , n);
}
To drukuje 1481986944.00 (w tej chwili).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-17 16:07:54
Należy zapoznać się z dokumentacją dla ctime. {[0] } Jest funkcją, która pobiera jeden parametr typu time_t *
(Wskaźnik do obiektu time_t
) i przypisuje mu bieżący czas. Zamiast przekazywać ten wskaźnik, Możesz również przekazać NULL
, a następnie użyć zwracanej wartości time_t.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-26 03:02:43
Możesz przekazać wskaźnik do time_t
obiektu, w którym czas wypełni się bieżącym czasem(a wartość zwracana jest taka sama, na którą wskazałeś). Jeśli przechodzisz w NULL
, po prostu go ignoruje i zwraca tylko nowy obiekt time_t
, który reprezentuje bieżący czas.
Nb:time(&timer);
jest równoważne timer = time(NULL);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-08 05:52:15