Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Operacje na czasie - milisekundy
Forum PHP.pl > Forum > PHP
cast
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...questionmark.gif

z góry dziękuje,

pozdrawiam,
nasty
  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ć.
cast
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
maryaan
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
cast
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 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.
nospor
  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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.