Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> CountDownTimer Odliczanie od czasu serwera
Qatadah
post 17.05.2018, 18:38:32
Post #1





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

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


Cześć. Mam zegar zliczający czas, działa tak jak chciałem, nie wiem tylko dlaczego wciąż uporczywie po zmianie czasu w systemie przelicza mi czas od daty systemowej do daty wydarzenia mimo iż stronę mam na hostingu a nie pod XAMPPem.
Jak to zrobić by bez względu na ustawioną datę w systemie odliczać od daty z serwera. Jak to powinno wyglądać poprawnie?

Plik index.php

  1. ...
  2. </head>
  3. <?php include('PHP/CountDownTimer.php') ?>
  4. <body>
  5. ...



Plik CountDownTimer.php

  1. <?php
  2. $date = date('M d, Y H:i:s', strtotime('19-5-2018 15:00:00'));
  3. $date1 = date('M d, Y H:i:s', strtotime('8-3-2019 15:37:25'));
  4. ?>


  1.  
  2. var count = new Date("<?php echo $date;?>").getTime();
  3. var count1 = new Date("<?php echo $date1;?>").getTime();
  4.  
  5. var timer1 = new Timer('demo', count);
  6. var timer2 = new Timer('demo1', count1);
  7.  
  8. function Timer(id, countDownDate) {
  9. this.interval = setInterval(tick, 1000);
  10.  
  11. ..........
  12.  
Go to the top of the page
+Quote Post
SmokAnalog
post 17.05.2018, 18:47:33
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Chcesz odliczać od aktualnego czasu czy od dwóch stałych dat? Bo teraz w kodzie nigdzie nie masz pobierania aktualnej daty, więc nie za bardzo wiem w czym problem.
Go to the top of the page
+Quote Post
Qatadah
post 17.05.2018, 21:20:30
Post #3





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

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


Te dwie daty działają nie zależnie, chodzi o to że mogę mieć odliczanie w tym przypadku do dwóch wydarzeń jednocześnie.

Ale to wszystko działa. Właśnie więc jak na moim przykładzie pobrać tą datę serwera bo spędza mi już to sen z powiek. Poniżej zamieszczę jeszcze raz kompletne odliczanie.


  1. <?php
  2. $date = date('M d, Y H:i:s', strtotime('19-5-2018 15:00:00'));
  3. $date1 = date('M d, Y H:i:s', strtotime('8-3-2019 15:37:25'));
  4. ?>
  5.  
  6.  
  7. var count = new Date("<?php echo $date;?>").getTime();
  8. var count1 = new Date("<?php echo $date1;?>").getTime();
  9.  
  10. var timer1 = new Timer('demo', count);
  11. var timer2 = new Timer('demo1', count1);
  12.  
  13. function Timer(id, countDownDate) {
  14. this.interval = setInterval(tick, 1000);
  15.  
  16. function tick() {
  17. var now = new Date().getTime();
  18. var distance = countDownDate - now;
  19. var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  20. var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  21. var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  22. var seconds = Math.floor((distance % (1000 * 60)) / 1000);
  23. if (days<10) {days = '0' + days;}
  24. if (hours<10) {hours ='0' + hours;}
  25. if (minutes<10) {minutes ='0' + minutes;}
  26. if (seconds<10) {seconds ='0' + seconds;}
  27.  
  28. var $elem = document.getElementById(id);
  29.  
  30. $elem.getElementsByClassName("days")[0].innerHTML = days;
  31. $elem.getElementsByClassName("hours")[0].innerHTML = hours;
  32. $elem.getElementsByClassName("minutes")[0].innerHTML = minutes;
  33. $elem.getElementsByClassName("seconds")[0].innerHTML = seconds;
  34.  
  35. if (distance < 0) {
  36. clearInterval(this.interval);
  37.  
  38. document.getElementById(id).style.color = "#d1b333";
  39. document.getElementById(id).style.fontSize = "30px";
  40. document.getElementById(id).innerHTML = "L I V E...!!!";
  41. }
  42. }
  43. }
Go to the top of the page
+Quote Post
trueblue
post 17.05.2018, 22:00:59
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


1. We fragmencie PHP dodaj trzecią zmienną na podstawie aktualnej daty.
2. Dodaj zmienną np.: now, analogicznie do zmiennych count i count1.
3. Oblicz różnicę między zmiennymi count i count1 oraz now i przekaż ją jako trzeci parametr przy tworzeniu Timer.
4. Zapisz odebraną różnicę. (za this.interval, np.: this.distance = ...). Obliczenia wykonuj na podstawie this.distance.
5. Wyrzuć linie 18 i 19.
6. Na końcu funkcji tick wstaw: this.distance -= 1000;


--------------------
Go to the top of the page
+Quote Post
Qatadah
post 19.05.2018, 15:06:23
Post #5





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

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


Możesz mi pomóc w punkcie tylko pierwszym ewentualnie dalej ale to już zależy od Pana, ja myślałem że w date pobieram date tak jest w każdym kursie, może ja czegoś nie zrozumiałem i sam się w tym mieszam
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: 18.04.2024 - 05:32