Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problemy z odliczaniem do wydarzenia, Jak zrobić multi odliczanie i jak pobrać czas z serwera a nie lokalnie
Qatadah
post 5.11.2017, 12:32:31
Post #1





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

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


Cześć Jestem nowicjuszem i potrzebuję pomocy z kodem ale i radę. Chodzi o odliczanie do wydarzenia.

Jak obliczać czas od daty serwera a nie lokalnej? ale tu proszę też o pomoc w zrozumieniu, czy to ma sens? bo kto zmienia datę systemową?, poza tym dojdą kolejne linijki kodu gdy mamy różnice w czasie co na razie jest już czarną magią dla mnie

Jak dodać kilka wydarzeń (różnych odliczań) na jednej stronie z jednego kodu

Mój kod na teraz wygląda tak
JavaScript
  1. var countDownDateTime = new Date("2017-11-12 12:00:00").getTime();
  2.  
  3. var myInterval = setInterval(function () { "use strict";
  4.  
  5. var currentDateTime = new Date().getTime();
  6.  
  7. var diff = countDownDateTime - currentDateTime;
  8.  
  9. var days = Math.floor(diff / (1000 * 60 * 60 * 24));
  10. var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  11. var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
  12. var seconds = Math.floor((diff % (1000 * 60)) / 1000);
  13. if (days<10) {days = '0' + days;}
  14. if (hours<10) {hours ='0' + hours;}
  15. if (minutes<10) {minutes ='0' + minutes;}
  16. if (seconds<10) {seconds ='0' + seconds;}
  17.  
  18. document.getElementById("days").innerHTML = days;
  19. document.getElementById("hours").innerHTML = hours;
  20. document.getElementById("minutes").innerHTML = minutes;
  21. document.getElementById("seconds").innerHTML = seconds;
  22.  
  23. if (diff < 0) {
  24. clearInterval(myInterval);
  25. var elem = document.getElementById("clear");
  26. elem.parentNode.removeChild(elem);
  27. }
  28. }, 1000);


Kod Html
  1. <ul id="clear">
  2. <li><span id="days"></span>Dni</li>
  3. <li><span id="hours"></span>Godzin</li>
  4. <li><span id="minutes"></span>Minut</li>
  5. <li><span id="seconds"></span>Sekund</li>
  6. </ul>

Go to the top of the page
+Quote Post
viking
post 5.11.2017, 13:02:34
Post #2





Grupa: Zarejestrowani
Postów: 5 278
Pomógł: 889
Dołączył: 30.08.2006

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


https://prophp.pl/advice/show/4/w_jaki_spos...dzy_php_i_js%3F
https://prophp.pl/article/28/propagacja_i_d...en_w_javascript

Ma to sens bo weź pod uwagę różne strefy czasowe użytkowników.


--------------------
Go to the top of the page
+Quote Post
Qatadah
post 5.11.2017, 15:31:24
Post #3





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

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


Dobrze wszystko jest zrozumiałe ale przeglądam kody w necie "countdown timer php" Jak pobrać w tym moim kodzie czas z serwera wszędzie gdzie nie wejdę jest tylko javascript albo jquery nie ma jak użyć czasu z serwera. Jak próbowałem to ogarnąć tak: ale jak tu funkcję dołożyć by czas się na stronie na bieżąco się odświeżał odświeżał

  1. <?php
  2.  
  3. $date = strtotime("2019-12-05 12:00:00");
  4. $remaining = $date - time();
  5.  
  6. $days = floor ($remaining / 86400);
  7. $hours = floor (($remaining % 86400) / 3600);
  8. $min = floor (($remaining % 3600) / 60);
  9. $sec = floor ($remaining % 60);
  10. ?>
  11.  
  12. <div id="container">
  13. <div class="m"> <span><?php echo $days; ?></span>Dni</div>
  14. <div class="m"> <span><?php echo $hours; ?></span>Godzin</div>
  15. <div class="m"> <span><?php echo $min; ?></span>Minut</div>
  16. <div class="m"> <span><?php echo $sec; ?></span>Sekund</div>
  17. </div>
  18.  
  19. </body>


Ten post edytował Qatadah 5.11.2017, 15:56:22
Go to the top of the page
+Quote Post
viking
post 5.11.2017, 16:00:56
Post #4





Grupa: Zarejestrowani
Postów: 5 278
Pomógł: 889
Dołączył: 30.08.2006

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


Musiałbyś stronę co sekundę przeładować co oczywiście nie ma sensu. Dynamiczne odświeżanie robi się w js. Wystarczy pobrać czas raz po załadowaniu i na nim operować.


--------------------
Go to the top of the page
+Quote Post
Qatadah
post 9.11.2017, 00:12:17
Post #5





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

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


Cześć mógłbym prosić o poprawę tego kodu, nie mam pojęcia dlaczego to nie działa, w zamyślę ma to być multi odliczanie czyli w HTMLU dopiero podaję datę i godzinę. Najlepsze jest to że kod działa jsfiddle.net na tej samej bibliotece jQuery co u mnie najnowszej 3.2.1. Co jest u mnie nie tak? Linki do plików mam poprawne no po prostu nie wiem sad.gif
HTML

  1. <script src="jquery-3.2.1.min.js"></script>
  2. <script type="text/javascript" src="js/Timer.js"></script>
  3. </head>
  4.  
  5. <div data-countdown="2019/01/01">
  6.  
  7. <div class="days"><span>dni</span></div>
  8.  
  9. <div class="hours"><span>godzin</span></div>
  10.  
  11. <div class="minutes"><span>minut</span></div>
  12.  
  13. <div class="seconds"><span>sekund</span></div>
  14.  
  15. </div>


timer.js
[JAVASCRIPT] pobierz, plaintext
  1. $('[data-countdown]').each(function() { "use strict" ;
  2. var $this = $(this), finalDate = $(this).data('countdown');
  3. $this.countdown(finalDate, function(event) {
  4. $(".days").text(event.strftime("%-d"));
  5. $(".hours").text(event.strftime("%H"));
  6. $(".minutes").text(event.strftime("%M"));
  7. $(".seconds").text(event.strftime("%S"));
  8. });
  9. });
[JAVASCRIPT] pobierz, plaintext




Ten post edytował Qatadah 9.11.2017, 09:03:25
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 25.03.2019, 13:47:13
Post #6





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 5.11.2009

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


Również podepnę się pod wątek by nie robić nowego. Chciałbym aby skrypt wyświetlał na żywo ile czasu w godz, min, sec jest od zaznaczonej daty. Jeszcze bardziej jakby wybraną datę można było pobrać z bazy danych i od niej liczył ile czasu mineło. Bez podawania dni. Same godziny, min, sec. ktoś pomoże ?

$data = "2019-03-25 15:00:00";


  1. var countDownDate = new Date("2019-03-25 15:00:00").getTime();
  2.  
  3. var x = setInterval(function() {
  4.  
  5. var now = new Date().getTime();
  6.  
  7. var distance = countDownDate - now;
  8.  
  9. var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  10. var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  11. var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  12. var seconds = Math.floor((distance % (1000 * 60)) / 1000);
  13.  
  14. document.getElementById("demo").innerHTML = days + "d " + hours + "h "
  15. + minutes + "m " + seconds + "s ";
  16.  
  17. }, 1000);
  18.  
  19. <p id="demo"></p>
  20.  
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.08.2019 - 08:28