Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Odliczanie czasu
Mati-21
post 30.03.2012, 11:48:47
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.02.2006

Ostrzeżenie: (0%)
-----


Witam

Mam skrypt JS, który odlicza mi 1h.
  1. $time = time();
  2. $countdown = $time + 3600;
  3.  
  4. echo '<strong id="countdown_1"></strong>';
  5.  
  6. <script type="text/javascript">
  7. function countdown(targetDate, displayElement, onCountdownFinish) {
  8. if (!(targetDate && displayElement)) {
  9. return;
  10. }
  11. var formatTimeInterval = function(seconds) {
  12. var hrs = Math.floor(seconds / 3600)
  13. var min = Math.floor(seconds / 60) % 60;
  14. var sec = seconds % 60;
  15. return (hrs + ":" + min + ":" + sec).replace(/(^|:)(\d)(?=:|$)/g, "$10$2");
  16. };
  17. var refreshTimer = function() {
  18. var now = new Date();
  19. var diffMilliseconds = targetDate.getTime() - now.getTime();
  20. var diffSeconds = Math.round(diffMilliseconds / 1000);
  21. if (diffSeconds < 0) {
  22. diffSeconds = 0;
  23. }
  24. var countdownHTML = formatTimeInterval(diffSeconds)
  25. if (countdownHTML != displayElement.innerHTML) {
  26. displayElement.innerHTML = countdownHTML;
  27. }
  28. if (diffSeconds === 0) {
  29. clearInterval(intervalId);
  30. if (typeof onCountdownFinish === "function") {
  31. onCountdownFinish(targetDate);
  32. }
  33. }
  34. };
  35. var intervalId = setInterval(refreshTimer, 250);
  36. refreshTimer();
  37. }
  38.  
  39. (function() {
  40. var now = new Date();
  41. countdown(new Date(' . ($countdown) * 1000 . '), document.getElementById("countdown_1"));
  42. })();
  43. </script>';

Problem polega na tym, że nie zaczyna liczyć o 01:00:00.
Początkowo odliczał o 01:02:38 teraz od 01:03:51.
W ogóle nie znam się na pisaniu w JS dlatego zwracam się do Was czy możecie mi powiedzieć co jest źle w kodzie, że tak się dzieje?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Kshyhoo
post 30.03.2012, 11:53:20
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Coś masz skopane u siebie, bo u mnie działa dobrze. Może gryzie się z innymi skryptami JS.


--------------------
Go to the top of the page
+Quote Post
Mati-21
post 30.03.2012, 12:01:23
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.02.2006

Ostrzeżenie: (0%)
-----


Na podstronie mam tylko ten kod i nadal odlicza od 01:03:52. Czy może to być wina serwera?

Edit: Przed chwilą sprawdziłem kod na localhost-cie i tutaj działa prawidłowo :-/

Ten post edytował Mati-21 30.03.2012, 12:03:16
Go to the top of the page
+Quote Post
Kshyhoo
post 30.03.2012, 12:15:11
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(Mati-21 @ 30.03.2012, 13:01:23 ) *
Na podstronie mam tylko ten kod i nadal odlicza od 01:03:52. Czy może to być wina serwera?

Najwidoczniej, nie możemy tego potwierdzić, bo nie wiemy, gdzie masz serwer. Sprawdź, czy nie gryzie się z innym kodem.


--------------------
Go to the top of the page
+Quote Post
Mati-21
post 30.03.2012, 12:26:23
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.02.2006

Ostrzeżenie: (0%)
-----


Zrobiłem test kodu na 5 serwerach.

localhost (WebSerwer) - odlicza prawidłowo

cal.pl (serwer główny) - 01:03:53

cba.pl - 01:01:03
webserwer.pl - 01:01:05
prv.pl - 01:01:03

Na podstronie jest tylko kod podany w 1 poście.
Go to the top of the page
+Quote Post
Kshyhoo
post 30.03.2012, 12:30:21
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Może dodaje jeszcze różnicę między czasem Twojego localhosta a serwera zewnętrznego wink.gif


--------------------
Go to the top of the page
+Quote Post
Mati-21
post 30.03.2012, 12:36:49
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.02.2006

Ostrzeżenie: (0%)
-----


No właśnie też o tym pomyślałem ale początkowo na moim serwerze różnica czasu wynosiła 2:38 a teraz jest 3:51. Sprawdzałem to również na innym komputerze to ten czasy był jeszcze inny. Jakby był stały to wystarczyła by prosta korekta po przez odejmowanie nadmiarowego czasu.

Edit: A może problem polega na tym, że obiekt date() pobiera date jaka jest ustawiona w systemie a nie czas jaki jest na serwerze?

Edit 2: Problem rozwiązany :-D

Oto kod poprawionego skryptu jakby ktoś inny potrzebował:
  1. $time = time();
  2. $countdown = $time + 3600;
  3.  
  4. echo '<strong id="countdown_1"></strong>';
  5.  
  6. <script type="text/javascript">
  7. var roz = new Date().getTime()-(' . date('U') * 1000 . ');
  8. function countdown(targetDate, displayElement, onCountdownFinish) {
  9. if (!(targetDate && displayElement)) {
  10. return;
  11. }
  12. var formatTimeInterval = function(seconds) {
  13. var hrs = Math.floor(seconds / 3600)
  14. var min = Math.floor(seconds / 60) % 60;
  15. var sec = seconds % 60;
  16. return (hrs + ":" + min + ":" + sec).replace(/(^|:)(\d)(?=:|$)/g, "$10$2");
  17. };
  18. var refreshTimer = function() {
  19. var now = new Date();
  20. now.setTime(now.getTime()-roz);
  21. var diffMilliseconds = targetDate.getTime() - now.getTime();
  22. var diffSeconds = Math.round(diffMilliseconds / 1000);
  23. if (diffSeconds < 0) {
  24. diffSeconds = 0;
  25. }
  26. var countdownHTML = formatTimeInterval(diffSeconds)
  27. if (countdownHTML != displayElement.innerHTML) {
  28. displayElement.innerHTML = countdownHTML;
  29. }
  30. if (diffSeconds === 0) {
  31. clearInterval(intervalId);
  32. if (typeof onCountdownFinish === "function") {
  33. onCountdownFinish(targetDate);
  34. }
  35. }
  36. };
  37. var intervalId = setInterval(refreshTimer, 250);
  38. refreshTimer();
  39. }
  40.  
  41. (function() {
  42. var now = new Date();
  43. now.setTime(now.getTime()-roz);
  44.  
  45. countdown(new Date(' . ($countdown) * 1000 . '), document.getElementById("countdown_1"));
  46. })();
  47. </script>';


Ten post edytował Mati-21 30.03.2012, 13:26:42
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:45