Nietypowy zegar

0

Witam, mam prośbę, czy mógłby mi ktoś pomóc w stworzeniu nietypowego zegara na stronę www?

Chciałbym, żeby po pierwsze płynął np. 2 razy wolniej (lub 4) a zamiast konkretnej godziny wyświetlały się pory dnia np. dla przedziału 08:00-10:00 - rano. Czy mógłby mi ktoś w tym pomóc?

0

Zdajesz sobie sprawę z implikacji stwierdzenia, że czas ma płynąć 2/4x wolniej? Upraszczając: jeśli wyświetlałbyś tylko info "Dzień" lub "Noc" (oba okresy po 12h), to przez pierwsze 24h zegara byłby "Dzień", przez drugie 24h "Noc" i tak dalej. Jedna doba w Twoim zegarze odpowiadałaby dwóm dobom w czasie rzeczywistym. Jeśli miałbyś tam nie tylko czas, ale i datę, to data by się także oczywiście szybko rozsychronizowała.

0

Byłby on bez daty i chodzi mi o to aby nie pokazywał rzeczywistego czasu tylko zupełnie fikcyjny. Zupełnie odmienny od tego który jest w rzeczywistości, aby właśnie np. jedną dobę trwał dzień, a drugą noc.

PS.

Nie wiem czy to możliwe, bo zdaje sobie sprawę, że zazwyczaj takie zegary działają po prostu na podstawie pobierania godziny z normalnego zegara i ewentualną korekcją czasu np. dla strefy czasowej. Zastanawiam się tylko czy jest możliwe np. Uruchomienie zegara, który nie pobierałby danych z normalnego czasu, a np. wykorzystywał zmienne czasu (sekundy, minuty itd) jako odnośnik jednostki czasu w której miałby zmieniać się czas na tym fikcyjnym zegarze. Np. po 2 upłyniętych minutach na realnym zegarze miałby się zmienić czas na fikcyjnym zegarze o minutę. Nie wiem czy to możliwe lub czy jest inne rozwiązanie tego problemu, bo ja dopiero zaczynam dlatego szukam pomocy wśród ekspertów =)

0

Tak, da się to zrobić. Komputery mierzą czas w sekundach, które upłynęły od pewnego z góry zdefiniowanego momentu. Pewna liczba całkowita jest liczbą sekund, które upłynęły od chwili X (np. 1 stycznia 1970 roku, godziny 0000). Ta liczba reprezentuje bieżący czas/datę. Można więc zamienić liczbę całkowitą, liczbę sekund, na konkretny czas/datę. Więc na czasie/datach można przeprowadzać operacje arytmetyczne. Nie ma problemu, by liczbę całkowitą podzielić przez 2 i zaokrąglić, a dopiero potem przerobić na ciąg znaków reprezentujący czas.

Możesz odjąć od siebie dwie daty: od bieżącej (którą program pobierze z zegara systemowego) możesz odjąć chwilę z przeszłości, "godzinę zero" dla Twojego zegara. Otrzymasz różnicę w sekundach. Następnie, możesz ponownie wziąć Twój czas zero i dodać do niego tę różnicę podzieloną przez 2. Twój zegar będzie zsychronizowany z rzeczywistym zegarem w godzinie zero, ale dalej już będzie chodził dwukrotnie wolniej.

Implementacja zależy oczywiście od użytego języka: czy to będzie JavaScript, czy coś po stronie serwera...

0

Dzięki wielkie! Mam jednak problem z wprowadzeniem tego w życie bo jak wspomniałem rozpoczynam dopiero swoją przygodę z programowaniem. Chciałem to zrobić w JS, ale nie wiem jak to powinno dokładnie wyglądać. Czy byłaby możliwość żebyś przesłał mi fragment kodu o którym pisałeś w swojej wypowiedzi?

PS.

Jeśli uważasz, że JS nie jest optymalnym rozwiązaniem w tym wypadku to powiedz od razu i będę kombinował w czymś co polecisz.

0

Jeśli chcesz, żeby zegar zmieniał się dynamicznie w czasie gdy ktoś siedzi na Twojej stronie, to JavaScript jest dobrym rozwiązaniem. Musisz użyć tu obiektów Date. Jeśli chcesz zrobić to tak, jak opisałem wyżej, to użyj też metod getTime i setTime. Pierwsza zwraca liczbę milisekund, która upłynęła od początku 1970 roku -- czyli to, co opisałem, tyle że dokładniejsze, bo w milisekundach, a nie sekundach. Druga funkcja ustawia datę na podstawie przekazanej liczby milisekund.

Fragmentu kodu nie prześlę. Jeśli nie znasz nawet specjalnie JS-u, to znaczy to, że musiałbym całość napisać za Ciebie. Z takimi ogłoszeniami to sugeruję się udać do działu Praca i ew. podać budżet projektu (lub pozwolić, by np. wygrała najtańsza oferta spełniająca Twoje wymagania). Tutaj generalnie pomagamy z konkretnymi problemami napotkanymi przy samodzielnym rozwiązywaniu dużych problemów, a nie wykonujemy pracy za kogoś. No chyba że ktoś ma czas i mu się zachce.

0

Dzięki jeszcze raz za pomoc. W takim razie posiedzę sobie i podłubię, bo nie chce komuś płacić za coś co ma mi posłużyć do nauki. Prosiłem o kod, bo pomyślałem, że tak łatwiej będzie mi się nauczyć tego i zobaczyć co skąd się wzięło, ale w takim razie dojdę do tego metodą prób i błędów. Pozdrawiam

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