|
SWiSH Forum
Forum użytkowników programów SWiSH
|
Zliczanie dni - wersja 2 |
Autor |
Wiadomość |
roland
Site Admin Roland Zimek
Wersja SWiSH: Max4
Pomógł: 31 razy Wiek: 58 Dołączył: 21 Sty 2005 Posty: 424 Skąd: Opole
|
Wysłany: Czw 30 Cze, 2005 10:57 Zliczanie dni - wersja 2
|
|
|
Jakiś czas temu umieściłem na Forum skrypt pozwalający obliczyć ile dni pozostało do końca roku:
http://swish.wodip.opole....topic.php?t=177
Jednak problem pozostał, gdyż wiele osób nie potrafiło przerobić podany skrypt do innego rodzaju obliczeń, na przykład aby obliczyć ile dni upłynęło od początku roku, itp.
Dlatego też postanowiłem napisać uniwersalny skrypt, potrafiący wykonać wiele różnych rodzajów obliczeń na datach. Znajduje się on w dziale Download, pod adresem:
http://swish.wodip.opole....ction=file&id=9
a także do pobrania na końcu tej wiadomości.
W pliku ZIP znajduje się plik IleDni2 OPIS.txt, zawierający dokładny opis zdefiniowanych zmiennych i funkcji.
Wszystkie funkcje mogą być wywoływane samodzielnie, w razie zaistniałej potrzeby.
Z ciekawostek: można obliczyć ile dni minęło od Waszego dnia urodzin i nawet jaki był to dzień tygodnia . Niestety w tej wersji skrypt nie potrafi jeszcze obliczyć ile dni pozostało do śmierci
UWAGA. Aby zbytnio nie rozbudowywać skryptu, nie jest on zabezpieczony przed podawaniem nieprawdziwych dat. Mogą wtedy wystąpić błędy lub funkcje mogą podawać nieprawdziwe wyniki. Wyniki powinny być obliczane poprawnie dla dat powyżej 1582 roku, kiedy to nastąpiło wprowadzenie kalendarza gregoriańskiego.
Poniżej podaję kod, który umieściłem w Scene1, dzięki czemu, można go skopiować i wkleić do gotowej już animacji, rozbudowywując ją o podane funkcje:
Kod: | onLoad () {
//(c)2005 Roland Zimek
//http://forum.swish.pl
DniWMiesiacu = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
DniTygodnia = new Array("poniedziałek","wtorek","środa","czwartek","piątek","sobota","niedziela");
NazwyMiesiaca = new Array("styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień");
NazwyMiesiacaWDopelniaczu = new Array("stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia");
data = new Date();
DzisDzien = data.getDate();
DzisMiesiac = data.getMonth()+1;
DzisRok = data.getFullYear();
}
function IleDniWRoku(rok) {
if (((rok % 400) == 0) || ((rok % 4) == 0) && (rok % 100) <> 0) {
return 366;
} else {
return 365;
}
}
function IleDniWMiesiacu(miesiac,rok) {
IleDni=_root.DniWMiesiacu[miesiac-1];
if (miesiac==2 && _root.IleDniWRoku(rok)==366) {
IleDni=29;
}
return (IleDni);
}
function IleDniOdPoczatkuRoku(dzien,miesiac,rok) {
suma=0;
for (i=1; i<miesiac; i++) {
suma+=_root.IleDniWMiesiacu(i,rok);
}
suma+=Dzien-1;
return (suma);
}
function IleDniDoKoncaRoku(dzien,miesiac,rok) {
suma=0;
for (i=miesiac; i<13; i++) {
suma+=_root.IleDniWMiesiacu(i,rok);
}
suma-=dzien;
return (suma);
}
function IleDniPomiedzyDatami(dzien1,miesiac1,rok1,dzien2,miesiac2,rok2) {
if (rok1>rok2 || (rok1==rok2 && miesiac1>miesiac2) || (rok1==rok2 && miesiac1==miesiac2 && dzien1>dzien2)) {
dd=dzien2;
mm=miesiac2;
rr=rok2;
dzien2=dzien1;
miesiac2=miesiac1;
rok2=rok1;
dzien1=dd;
miesiac1=mm;
rok1=rr;
}
suma=0;
if (rok1<rok2) {
suma+=_root.IleDniDoKoncaRoku(dzien1,miesiac1,rok1)+1;
suma+=_root.IleDniOdPoczatkuRoku(dzien2,miesiac2,rok2);
for (i=rok1+1; i<rok2; i++) {
suma+=_root.IleDniWRoku(i);
}
} else if (rok1==rok2) {
suma=_root.IleDniOdPoczatkuRoku(dzien2,miesiac2,rok2)-_root.IleDniOdPoczatkuRoku(dzien1,miesiac1,rok1);
}
return (suma);
}
function DzienTygodnia(dzien,miesiac,rok) {
RoznicaDni=(5+IleDniPomiedzyDatami(1,1,1583,dzien,miesiac,rok))%7;
return (_root.DniTygodnia[RoznicaDni]);
}
function NazwaMiesiaca(miesiac) {
return (_root.NazwyMiesiaca[miesiac-1]);
}
function NazwaMiesiacaWDopelniaczu(miesiac) {
return (_root.NazwyMiesiacaWDopelniaczu[miesiac-1]);
}
|
Czekam na Wasze sugestie, co do dalszej rozbudowy skryptu
[ Dodano: Pią 23 Cze, 2006 11:45 ]
Dostałem na PW prośbę o napisanie skryptu obliczającego ilość lat i miesiący, jakie upłynęły pomiędzy podanymi datami. Umieszczę go tu, bo może komuś się jeszcze przyda. Jak widać jest to znacznie uproszczona wersja poprzedniego skryptu.
Kod: | onLoad () {
//(c)2006 Roland Zimek
//http://forum.swish.pl
data = new Date();
DzisDzien = data.getDate();
DzisMiesiac = data.getMonth()+1;
DzisRok = data.getFullYear();
trace(IleMamLat(6,6,2005,6,6,2006));
trace(IleMamMiesiecy(6,6,2005,6,6,2006));
}
function IleMamLat(dzien1,miesiac1,rok1,dzien2,miesiac2,rok2) {
if (miesiac1>miesiac2 || (miesiac1==miesiac2 && dzien1>dzien2)) {
return (rok2-rok1-1);
} else {
return (rok2-rok1);
}
}
function IleMamMiesiecy(dzien1,miesiac1,rok1,dzien2,miesiac2,rok2) {
if (dzien1<=dzien2) {
return (miesiac2-miesiac1);
} else {
return (-(13-miesiac2-miesiac1));
}
} |
Można oczywiście połączyć oba skrypty, w tym celu do pierwszego z nich (tego dłuższego), należy wkleić tyko same funkcje z drugiego skryptu. |
|
|
|
|
nic3
Bywalec
Dołączył: 14 Wrz 2009 Posty: 11 Skąd: Kraków
|
Wysłany: Pon 14 Wrz, 2009 22:32
|
|
|
Próbowałem przerobić licznik, który znajduje się w przykładach
programu SwishMax, aby liczył czas do zakończenia roku szkolnego
2009/2010 (jest to dzień 25 VI 2010), a nie czas do końca bieżącego
roku. Nie udało mi się to do końca, gdyż ilość dni się nie zgadza, czy
mógłbyś zobaczyć co źle przerobiłem? Poniżej podaje link do "mojego"
licznika:
http://wyslijto.pl/plik/3r5fqcsyro
Pozdrawiam nic3;) |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
|
|
|
|
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
| Strona wygenerowana w 0.08 sekundy. Zapytań do SQL: 11 |
|
|