Jacek - 12 Paź 1997, 03:00
Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Pozdrawiam
Jacek
Jacek Chmielewski - 12 Paź 1997, 03:00
Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Pozdrawiam
Jacek
Piotr Piatkowski - 12 Paź 1997, 03:00
: Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
: podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Chcesz ogólny algorytm, czy procedurę w jakimś konkretnym języku?
I na jaki system (to też wbrew pozorom ma znaczenie :-) )?
Slawomir Marczynski - 13 Paź 1997, 03:00
: Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
: podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Poszukaj algorytmow na tzw. `dni julianskie' (Julian Days; JulDay; ...).
W BC++ mozesz wykorzystac obiekty TDate - ale uwaga! - Borland spieprzyl
te obiekty jak tylko potrafil...
Jacek Chmielewski - 13 Paź 1997, 03:00
Poitr, dzieki za odpowiedz.
Interesuje mnie procedura w jezyku C++, system Windows NT.
Bede wdzieczny za odpowiedz.
Pozdrawiam
Jacek
: Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
: podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Chcesz ogólny algorytm, czy procedurę w jakimś konkretnym języku?
I na jaki system (to też wbrew pozorom ma znaczenie :-) )?
--
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Dariusz Michalek - 13 Paź 1997, 03:00
W BC++ mozesz wykorzystac obiekty TDate - ale uwaga! - Borland spieprzyl
te obiekty jak tylko potrafil...
Mozesz podac wiecej szczegolow? (odnosnie spieprzenia ;-)
Pozdrawiam
Darek
Qrczak - 13 Paź 1997, 03:00
Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Sam napisz, to naprawdę nie jest trudne. Hinty: Zamień obie daty na liczbę
dni od ustalonego punktu zerowego. Zrób stałą tablicę, w której dla każdego
miesiąca pamiętasz różnicę w dniu tego miesiąca i dniu roku (długość
wszystkich poprzedzających miesięcy). Rok r jest przestępny gdy (r mod 4 =
0) and (r mod 100 <0) or (r mod 400 = 0) albo !(r % 4) && (r % 100) || !(r
% 400).
QRCZAK
__("< Marcin Kowalczyk
^^ http://kki.net.pl/qrczak/
Marek Matula - 14 Paź 1997, 03:00
Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
w d,m,y masz poczatkowa date, a td,tm,ty - koncowa:
int ms[12]={31,28,31,30,31,30,31,31,30,31,30,31};
unsigned dc=0;
while(d++!=td || m!=tm || y!=ty) {
dc++;
if(m!=2 ? dms[m-1] : d28+(y%4==0)) {
d=1;
if(++m12) m=1, y++;
}
}
// dc - ilosc dni;
Algorytm ten jest totalnie nieoptymalny (petla while leci dla kazdego
dnia z przedzialu), ale jak nie potrzebujesz tych roznic liczyc
powiedzmy 1000 to wystarczy...
Mozesz tez uzyc funkcji dostounix i unixtodos - przeliczaja date na
ilosc sekund od 1 stycznia 1970 i odwrotnie, a nastepnie otrzymane
wartosci odjac i podzielic przez ilosc sekund/dzien. Tyle ze sie to
spieprzy dla lat <1970...
---
Marek Matula
http://www.polsl.gliwice.pl/~marekm
ICQ UIN: 3888637
Jacek Szewczyk - 16 Paź 1997, 03:00
| Czy ktos moze posiada procedure obliczajaca liczbe dni pomiedzy dwoma
| podanymi datami: np. liczba dni od 12.04.83 do 10.01.96 ?
Jak zwykle nikt nie pomyslal o dniach Julianskich. Algorytm jest znany.
Jest na pewno na simtelu (nawet w pascalu) i chyba na funecie. Ma
troszku duze liczby (zrobiony jest od daty kiedy kalendarz julianski i
gregorianski maily taka sama date, ale uzywaja tego w arkuszach kalk.
wiec chyba nie jest to takie zle. Jak sie podzieli to to przez 7 to masz
dni tygodnia (tak jak w poprzednio proponowanych odpowiedziach) w sumie
roznicatylko daty poczatkowej. Ale astronomowie uzywaja tego juz od
bardzo dawna.
JaS'