zliczanie sekund od 01.01.1970 do innej daty w przeszłości

0

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.

0

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.

0

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.

0

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.

0

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.

0

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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1