PHP - Tidsskillnader med noggrannhet

Permalänk

PHP - Tidsskillnader med noggrannhet

Så jag drar ett exempel för att förklara det här som bäst:
laggtill.php:
Tiden är 2012-01-22 21:27:21 just nu
Värdet 2012-01-22 21:27:51 (30 sek mer än nuv. tid) läggs in i databasen.

tidsskillnad.php:
Räknar ut skillnaden på tiden i databasen och nuvarande tiden.
Om det har gått 10 sekunder så skriver scriptet ut 20 sekunder även om det gått 10 och en halv sekund. Jag vill göra detta lite mer "pricksäkert" genom att använda tiondelar, hundradelar eller millisekunder (jag nöjer mig med tiondelar). Hur?

Jag lägger till de 30 sekunderna genom att använda Mktime()
$tid_sen = mktime(date("H"), date("i"), date("s")+$tid_langd, date("m"), date("d"), date("y"));
där $tid_langd = 30;
Jag kan inte lägga in tiden i en databas utan att använda Varchar?
Men det viktigaste är att mktime stödjer inget mindre än sekunder.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem
Skrivet av Björnen123:

Jag kan inte lägga in tiden i en databas utan att använda Varchar?

Din databas har troligen någon sorts datatyp för tid. Tittar man på exempelvis MySQL 5.6.4 så verkar det finnas stöd för högupplöst tid.

Permalänk
Skrivet av Fnorken:

Din databas har troligen någon sorts datatyp för tid. Tittar man på exempelvis MySQL 5.6.4 så verkar det finnas stöd för högupplöst tid.

Det är dock inte det största problemet. Det där med att mktime() inte stödjer något mindre än sekunder är ju jobbigt. Finns det annan metod?
Här är koden för att plussa på tid atm:

$tid_klar = mktime(date("H"), date("i"), date("s")+$tid_langd, date("m"), date("d"), date("y")); $tid_klar = date("Y-m-d H:i:s", $tid_klar);

EDIT: Wampserver stödjer bara 5.5.20 just nu? Finns det något sätt att uppgradera?

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Permalänk
Medlem

$mic = substr(microtime(), 1, 3); $time = date("Y-m-d H:i:s"); echo $time.$mic;

Ger tiondelar, vet inte om detta är exakt vad du är ute efter men kanske är något liknande.

Permalänk
Skrivet av BuruZ:

$mic = substr(microtime(), 1, 3); $time = date("Y-m-d H:i:s"); echo $time.$mic;

Ger tiondelar, vet inte om detta är exakt vad du är ute efter men kanske är något liknande.

Precis! Tack.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw