Witam,
pisał ktoś może w C taki programik który by zliczał ilość sekund od Unix Epoch czyli od 01.01.1970 do innej daty np. 22.12.2004?
Z góry dzieki za pomoc.
Witam,
pisał ktoś może w C taki programik który by zliczał ilość sekund od Unix Epoch czyli od 01.01.1970 do innej daty np. 22.12.2004?
Z góry dzieki za pomoc.
Poczytaj np.:
http://cpp0x.pl/dokumentacja/C/Data-i-czas/13
To, o co pytasz zwraca funkcja mktime. Zwracana wartość ma typ time_t
i jest to właśnie ilość sekund od 1.01.1970.
macie rację z tym, ale nie mogę znaleźć funkcji która oblicza czas w sekundach od 01.01.1970 do jakiejs daty w przeszłości. Jest funkcja która oblicza ilośc sekund od 01.01.1970 do chwili uruchomienia programu ale nie w tym sęk.
Kiedyś używałem jakieś funkcji robiącej time_t ze stringa, ale pewnie to było jakieś rozszerzenie GCC (podejrzewam, że z Posiksa). Zawsze możesz uzupełnić odpowiednie pola tm i wywołać mktime.
Po prostu policz sobie ilosc dni z uwzglednieniem lat przestepnych i pomnoz przez 246060 i masz wynik. Nie powinno byc trudno samemu taka funkcje napisac.
Algorytm obliczania ile dni upłynęło od "dnia 0".
http://alcor.concordia.ca/~gpkatch/gdate-algorithm.html napisał(a)
m = (m + 9) % 12
y = y - m/10
return 365y + y/4 - y/100 + y/400 + (m306 + 5)/10 + ( d - 1 )
Można też poszukać w googlu pod hasłami: data, algorytm, obliczanie
Alternatywnie, i prościej, można też to zrobić prostym hakiem jeśli nie interesują cię daty przed rokiem 370. W kalendarzu sytuacja powtarza się co 400 lat. Oblicz sobie ile sekund minęło od 1.01.0370 do 1.01.1970 (1600 lat), nazwijmy tą stała S
.
Obliczając wynik dodaj do roku danej daty 1600 lat. Następnie oblicz ile to sekund (mktime). Od wyniku odejmij S
. Wynik będzie ujemny gdy dana data jest przed 1.01.1970, dodatni jeśli po.
// EDIT
PS. Stałą S
powinien zwrócić mktime
gdy podamy mu 1.01.3570 (czyli 1.01.1970 + 1600 lat)