Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP] Różnica w odmierzaniu czasu, jak znowelować lub zsynchronizować
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


witam serdecznie, napisałem coś na szybko:
  1. <p id="php"></p>
  2. <p id="js"></p>
  3.  
  4. var jsTime = new Date();
  5. var phpTime = new Date("<?php echo date('c'); ?>");
  6. document.getElementById("php").innerHTML = 'Czas z serwera PHP: ' + phpTime;
  7. document.getElementById("js").innerHTML = 'Czas przeglądarki (JS): ' + jsTime;


jest to sfiddlowane tu: https://www.tehplayground.com/CkYfUInJPBESsPjc

generalnie u mnie w obecnym momencie pokazuje ze czas z serwera jest ok 13 sekund opozniony wzgledem przegladarki. Pytanie - czy daj się (i jak) to zniwelować a najlepiej zrobić jakiś button ze skryptem, który zaktualizuje czas w przeglądarce / systemie względem czasu PHP..?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
shpaque
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


ok zrobilem to sobie juz, teraz mam zagwostke przy tym skrypcie - niby odmieza czas:

  1. <script type="text/javascript">
  2. function showTime(text, time, id) {
  3. var t = setInterval(function() {
  4. var updateDate = new Date(time);
  5. var hours = Math.floor((updateDate % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  6. var minutes = Math.floor((updateDate % (1000 * 60 * 60)) / (1000 * 60));
  7. var seconds = Math.floor((updateDate % (1000 * 60)) / 1000, 2);
  8. var miliseconds = Math.floor(updateDate);
  9.  
  10. var content = text + ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2) + ':' + ('0' + seconds).slice(-2) + '<br><small>(w ms: <strong>' + miliseconds + '</strong>)</small>';
  11.  
  12. document.getElementById(id).innerHTML = content;
  13. }, 1000);
  14. }
  15.  
  16. <div class="row align-self-center" style="margin-top: 15px;">
  17. <div class="col-md-4 text-center align-self-center">
  18. <p id="serverTime" data-toggle="tooltip" data-title="To czas bazowy (serwera), na podstawie którego działa aplikacja Test"><script>showTime('Czas <strong>serwera</strong>: ', '<?php echo date('c'); ?>', 'serverTime');</script></p>
  19. </div>
  20. <div class="col-md-4 text-center align-self-center">
  21. <p id="systemTime" data-toggle="tooltip" data-title="To wskazanie czasu Twojego systemu i przeglądarki. Jeśli różni się choćby o parę sekund – oznacza to, że Twoje urządzenie ma źle ustawiony zegar"><script>showTime('Czas <strong>Twojego systemu</strong>: ', new Date(), 'systemTime');</script></p>
  22. </div>
  23. <div class="col-md-4 text-center align-self-center">
  24. <p id="correctTime" data-toggle="tooltip" data-title="System automatycznie koryguje różnicę casu Twojego systemu (powinien wskazywać identyczny czas jak czas serwera) – dzięki temu możesz bezpiecznie wziąć udział w teście">
  25. var srvTime = new Date('<?php echo date('c'); ?>');
  26. var sysTime = new Date();
  27. var correction = sysTime - srvTime;
  28. var corTime = new Date(Date.now() - correction);
  29.  
  30. showTime('Czas <strong>po korekcie</strong>: ', corTime, 'correctTime');
  31.  
  32. if (correction > 5000 || correction < -5000) {
  33. document.getElementById('systemTime').innerHTML = document.getElementById('systemTime').innerHTML + '<br><big style="margin-top: 5px;"><red><strong>MASZ ŹLE USTAWIONY ZEGAR SYSTEMOWY!</strong></red></big>';
  34. }
  35. </script>
  36. </p>
  37. </div>
  38. </div>


i pokazuje oraz niweluje roznicę, ale w obecnym stanie:
- nie zmienia się co sekundę (nie "chodzi")
- jak zmienię "var updateDate = new Date(time);" na "var updateDate = new Date(Date(time));" to chodzi ale wszedzie pokazuje czas serwera,
- jak zmienię "var updateDate = new Date(time);" na "var updateDate = new Date.now(time); chodzi ale wszedzie pokazuje zegar systemowy

przyklad na maku przy skrypcie załączonym powyżej (zegar stoi ale po wejsciu na strone pokazuje aktualny czas pociagniety przy renderze strony):

  1. Czas serwera: 10:29:44
  2. (w ms: 1590229784000)
  3.  
  4. Czas Twojego systemu: 10:29:44
  5. (w ms: 1590229784735)
  6.  
  7. Czas po korekcie: 10:29:44
  8. (w ms: 1590229784000)


@EDIT

Już sobie poradziłem. W ten sposób:

  1. <script type="text/javascript">
  2. function showTime(text, time, id) {
  3. var newTime = new Date(time);
  4. var interval = 0;
  5.  
  6. var t = setInterval(function() {
  7. var updateDate = new Date(newTime.getTime() + interval);
  8. var hours = updateDate.getHours();
  9. var minutes = updateDate.getMinutes();
  10. var seconds = updateDate.getSeconds();
  11. var miliseconds = Math.floor(updateDate);
  12.  
  13. var content = text + ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2) + ':' + ('0' + seconds).slice(-2) + '<br><small>(w ms: <strong>' + miliseconds + '</strong>)</small>';
  14. document.getElementById(id).innerHTML = content;
  15.  
  16. interval = interval + 1000;
  17. }, 1000);
  18. }
Go to the top of the page
+Quote Post

Posty w temacie
- shpaque   [JavaScript][PHP] Różnica w odmierzaniu czasu   20.05.2020, 13:23:18
- - trueblue   Ale po co synchronizować? Bazuj wyłącznie na czasi...   20.05.2020, 13:25:30
- - shpaque   nie da się - co zrobić w przypadku countera w js n...   20.05.2020, 13:26:04
- - viking   Czas z serwera PHP: Wed May 20 2020 14:26:06 GMT+0...   20.05.2020, 13:27:10
- - trueblue   Co chcesz osiągnąć, zapewnić równą sekundę na wszy...   20.05.2020, 13:31:57
- - shpaque   no u mnie jest tak: Czas z serwera PHP: Wed May 2...   20.05.2020, 13:35:09
- - trueblue   Cytat(shpaque @ 20.05.2020, 14:35:09 ...   20.05.2020, 14:08:10
- - shpaque   ok to teraz jak to zrobic kiedy skrypt korzysta z ...   20.05.2020, 14:28:13
- - trueblue   Nie ma opcji wstawienia daty? To od jakiej odlicza...   20.05.2020, 14:41:46
- - shpaque   RE: [JavaScript][PHP] Różnica w odmierzaniu czasu   20.05.2020, 15:03:44
- - trueblue   Przecież jest nawet przykład: http://hilios.github...   20.05.2020, 15:40:04
|- - shpaque   Cytat(trueblue @ 20.05.2020, 16:40:04...   20.05.2020, 19:54:49
- - trueblue   Zarzyj w kod tego pluginu. Jest tam ustawianie dat...   20.05.2020, 20:00:16
- - shpaque   w sumie racja... Cytat(trueblue @ 20.05.2020...   20.05.2020, 20:31:03
- - trueblue   Tu: https://github.com/hilios/jQuery.countdown/......   20.05.2020, 20:41:19
- - shpaque   ok zrobilem to sobie juz, teraz mam zagwostke przy...   23.05.2020, 21:17:31
- - Tomplus   Testowałeś przypadek gdy użytkownik będzie korzyst...   23.05.2020, 22:51:40
- - shpaque   testowalem 5 i 7 minut w jedna i w druga strone - ...   18.09.2020, 13:32:34
- - SmokAnalog   Najprościej ustalić różnicę między czasem serwera ...   18.09.2020, 14:42:56
- - shpaque   no ja mam tam tak zrobione: [HTML] pobierz, plain...   18.09.2020, 15:00:03
- - SmokAnalog   Praktycznie to samo. To jak brzmi pytanie?   18.09.2020, 15:09:20
- - shpaque   ponieważ w jednym miejscu - wlasciwie glownym - ko...   18.09.2020, 15:16:35
- - SmokAnalog   Nie za bardzo mi się chce analizować ten kod. Może...   18.09.2020, 15:42:38
- - shpaque   po krótce nie wiem jak w pliku api (the final coun...   21.09.2020, 14:03:03


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 Aktualny czas: 9.10.2025 - 17:05