Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacje na czasie - milisekundy
cast
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 30.11.2005

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


Chciałbym zrobić kilka operacji na czasie mianowicie:


Mam start zawodnika w biegu przełajowym np: 12:23:00

Czas przybycia na metę 13:28:17,45 - po przecinku milisekundy

i teraz potrzebuje obliczyć jaki miał czas dany zawodnik w milisekundach oczywiście...

Ktoś mógłby pomóc...(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

z góry dziękuje,

pozdrawiam,
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nasty
post
Post #2





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

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


  1. <?php
  2. $time_start = microtime(true);
  3. // .. i tutaj zawodnik biega
  4. $time_end = microtime(true);
  5. $time = $time_end - $time_start;
  6. // $time to jest jego czas w milisekundach
  7. ?>

Jak nie masz php 5 to zrob funkcje microtime recznie o tak:
  1. <?php
  2. function microtime_float()
  3. {
  4. list($usec, $sec) = explode(" ", microtime());
  5. return ((float)$usec + (float)$sec);
  6. }
  7. ?>


to przykład z manuala -- należało lepiej szukać.
Go to the top of the page
+Quote Post
cast
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 30.11.2005

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


Może nie dokońca jasno sie wyraziłem wcześniej, albo nie jestem w stanie zrouzmieć twojej idei,

Mam 2 pola Input w formularzu gdzie podaje start i czas na mecie. i po wyslaniu formularza chce obliczyc roznice...

Problem jest taki :

mam czas startu 12:00:00,00 i czas przybycia na metę 13:23:23,56

Myśle zeby dokonać takiej operacji, mój czas musze przeliczyc na jakiś znacznik czasu tak jak ma to przy time()

bo nie moge zrobić: 12:00:00,00 - 13:23:23,56 = 01:23:23,56 bo wyjda jakieś bzdury

Twój przykład jest ok ale tutaj

  1. <?php
  2. $time_start = microtime(true);
  3. ?>


skrypt mi wstawia czas pobrany z serwera a ja mam inny czas jak widac: 12:00:00,00
Go to the top of the page
+Quote Post
maryaan
post
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


jakbys nei zauwazyl to jest przyklad, zamiast $time_start i $time_end musisz sobie wmontowac rzeczywisty czas startu i dobiegniecia na mete, manual naprawde nie gryzie
Go to the top of the page
+Quote Post
cast
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 30.11.2005

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


Chlopaki skopiowac z manuala to ja tez potrafie, gdybym wiedzial jak to zrobic to bym glowy nie zawracal...

w Manualu pisze:

microtime -- Zwraca aktualny uniksowy znacznik czasu z mikrosekundami

Ale ja nie chce zwracac aktualnego czasu uniksowego znacznika czasu z serwera gdyz ja mam juz czas i to podany bardzo konkretnie.

Wydlug waszych wypowiedzi mam zrobic tak, jakos mam wrazenie ze to nie zadziala (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) :

  1. <?php
  2. $time_start = '12:00:00,00';
  3.  
  4. // .. i tutaj zawodnik biega
  5.  
  6. $time_end = '13:23:45,34';
  7.  
  8. $time = $time_end - $time_start;
  9.  
  10. // $time to jest jego czas w milisekundach
  11. ?>



Poniżej moze podam przyklad jak to zrobic ale nie uwzgeldniajac milisekund:

  1. <?php
  2. $sTimeB = 12:00:00;
  3. $sTimeA = 13:12:05;
  4.  
  5. $czas = gmstrftime("%H:%M:%S", strtotime($sTimeB) - strtotime($sTimeA);
  6. ?>


Dostaje wynik w postaci: 01:12:05

Dokladnie o to samo mi chodzi ale z uwzglednieniem milisekund...

Czy osoba ktora wie jak to zrobić mogłaby mi podać kod jak to zrobić tak jak ja podałem powyżej.

Ten post edytował cast 26.01.2007, 12:53:34
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. function toMiliS($time){
  3. $ar = explode(',',$time);
  4. return strtotime($ar[0])*1000+(!empty($ar[1]) ? (int)$ar[1] : 0);
  5. }
  6.  
  7. $zm = toMiliS('12:23:00');
  8. $zm2 = toMiliS('13:28:17,45');
  9. echo '<br />Milis: '.($zm2-$zm);
  10. echo '<br />Sekund: '.($zm2-$zm)/1000;
  11. ?>


edit: nie widzialem edita twojego
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 23:57