Hei!
On varmaan joku käyttänyt kyseistä microtime funktiota.
Kuinka käytännössä toimii, jos esimerkiksi on aika 11:01:00 joka pitäisi muuttaa mikrosekunneiksi?
Saat mikrosekunnit seuraavasti
$aika = new DateTime ( "12-12-2012" ); // <-- parametriksi haluamasi aika $mikrosekunnit = $aika->format ( "u" );
Edit. Korjasin virheen koodissa
Lisäys: Kummallista kyllä, mutta minulla tuo palauttaa aina nollan, vaikka on PHP 5.4.6 ja dokumentaation mukaan pitäisi toimia...
Halutaanko muuttaa siis päivämäärää (sekuntteja 1.1.1970 jälkeen) vaiko aikamäärää millisekunneiksi. Jos aikamäärä on formaatissa "11:01:00", niin tuohan menee ihan perinteisesti
Hyvin toimii myös vesikuusen koodi
<?php $aika = new DateTime ( "2012-12-12 11:01:00.254" ); // <-- parametriksi haluamasi aika $mikrosekunnit = $aika->format ( "u" ); echo $mikrosekunnit; // 254000 mikrosekunttia ?>
makumaku kirjoitti:
Halutaanko muuttaa siis päivämäärää (sekuntteja 1.1.1970 jälkeen) vaiko aikamäärää millisekunneiksi. Jos aikamäärä on formaatissa "11:01:00", niin tuohan menee ihan perinteisesti
Tuolla saat kyllä mikrosekuntimuodon, mutta et tarkkoja mikrosekunteja ;)
Lisäys:
Othnos kirjoitti:
Hyvin toimii myös vesikuusen koodi
<?php $aika = new DateTime ( "2012-12-12 11:01:00.254" ); // <-- parametriksi haluamasi aika $mikrosekunnit = $aika->format ( "u" ); echo $mikrosekunnit; // 254000 mikrosekunttia ?>
Ainiiin, oletin jostain syystä, että nuo mikrosekunnit olisi jokin UNIX timestampin mikrosekuntiversio... Mutta senkin saa tietysti pienellä laskutoimituksella :D
Koska tämä ketju on sen verran hauska, niin tahdon ehdottomasti osallistua tuotoksellani "juna on nopea, mutta kyllä perille pääsee pingviinilläkin":
$string = '11:01:00'; $multiplier = 3600; $ten_pow = 1; $secs = 0; $micro_suffix = '000000'; for ($i = 0; $i < strlen($string); $i++) { if ($string{$i} == ':') { $multiplier = ($multiplier / 60); $ten_pow = 1; } else { $secs += intval($string{$i}) * $multiplier * pow(10, $ten_pow--); } } echo "$string : {$secs}{$micro_suffix}";
Jos ihan aiheesta puhutaan niin ensimmäinen sekunnin tarkan ajanjakson saa mikrosekunneikse laittamalla vaikka '.000000' tuohon perään.
"11:01:00.000000"
Eli mitä kysyjä alunperin tarvitsi? Sekunnin muutos mikrosekunniksi on turhaa hommaa. Yleensä jos mikrosekunteja johon tarvitsee niin silloin käytetään microtime -funktiota (jos laitat siihen true:n parametriksi pääset suoraan leikkimään floateilla ja hommat on melko suoraviivaisia).
Mutta jos tosiaan halutaan muuttaa tuo alkuperäinen aika (tai siis sen tyyppinen aika) mikrosekunniksi niin tarvitaan ensin muunnos sekunneiksi, se kannattaa tehdä vaikka tuolla makumakun esittelemällä tavalla, jonka jälkeen voi sitten lisäillä niitä loppunollia haluamallaan tavalla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.