2010-08-20 16 views
32
  1. Çıktım 290.52262423327 saniye biçimindedir. Bunu 00:04:51 olarak nasıl değiştirebilirim?Çıkış saniye cinsindendir. hh: mm: ss biçimine dönüş

  2. Aynı çıkış saniyede ve HH: MM: SS biçiminde göstermek istiyorum, yani saniyelerse, sadece 290.52 saniye göstermek istiyorum (ondalık noktadan sonra yalnızca iki tam sayı)? bunu nasıl yapabilirim?

PHP'de çalışıyorum ve çıktı $time değişkeninde mevcut. Bu $time'u HH: MM: SS ve $newsec ile 290.52 olarak $newtime olarak değiştirmek istiyorum.

Teşekkür :)

+0

Bir süre mi yoksa bir zaman damgası mı arıyorsunuz? –

+0

kopyası ** [Günleri, saatleri, dakikaları ve saniyeleri saniye olarak dönüştürün] (http://stackoverflow.com/a/19680778/67332) ** veya ** [Saniyeye Saniye Dönüştür: Dakika: Saniye] (http: //stackoverflow.com/a/20870843/67332)** –

+0

olası kopyası [Saniye'ye dönüştür: Saat: Dakika: Saniye] (http://stackoverflow.com/questions/3172332/convert-seconds-to-hourminutcondcond) – PeerBr

cevap

70

1)

function foo($seconds) { 
    $t = round($seconds); 
    return sprintf('%02d:%02d:%02d', ($t/3600),($t/60%60), $t%60); 
} 

echo foo('290.52262423327'), "\n"; 
echo foo('9290.52262423327'), "\n"; 
echo foo(86400+120+6), "\n"; 

baskı

00:04:51 
02:34:51 
24:02:06 

2)

echo round($time, 2); 
+0

Ben bir satırda yaptığınız şeyi başarmaya çalışan bazı aşırı başarısız bölümler ve çıkarma işlevleri için koştum:) sprintf ('% 02d:% 02d:% 02d', ($ t/3600), ($ t/60% 60), $ t% 60) ' – adrianTNT

+2

sizlersiniz ... süper n en kısa çözüm. .teşekkürler –

-1
echo date('H:i:s',$time); 

echo number_format($time,2); 
+0

Zaman değerleri için çalışmayacak> 12 saat, ancak –

+0

zamanlar için çalışmayacak> 24 saat –

2

bu deneyin:

$time = 290.52262423327; 
echo date("h:i:s", mktime(0,0, round($time) % (24*3600))); 
3
$iSeconds = 290.52262423327; 
print date('H:i:s', mktime(0, 0, $iSeconds)); 
+0

Teşekkürler, bu işe yaradı. –

+0

Değerler için çalışmayacaksınız> 24 saat, ancak –

+0

evet işe yaramadı ... Teşekkürler uç-off pekka için –

0

1)

$newtime = sprintf("%02d:%02d:%02d", $time/3600, $time/60 % 60, $time % 60); 

2)

$newsec = sprintf("%.2f", $time); 
6

deneyin bu bir

echo gmdate("H:i:s", 90); 
+0

Bu çözüm, bir saniyede saniyeden daha az herhangi bir değer için çalışacaktır, ancak değerler 86400 için 00:00:00 olarak sıfırlanacak. – dctucker

+0

> 86400 değerleri için nasıl çalışılacağı hakkında herhangi bir fikir? –

0

Bu en etkili yolu olup olmadığını bilmiyorum, ama aynı zamanda gün görüntülemeniz gerekiyorsa, bu işleri:

function foo($seconds) { 
$t = round($seconds); 
return sprintf('%02d %02d:%02d:%02d', ($t/86400%24), ($t/3600) -(($t/86400%24)*24),($t/60%60), $t%60); 
} 
1

bu

:) deneyin
private function conversionTempsEnHms($tempsEnSecondes) 
    { 
     $h = floor($tempsEnSecondes/3600); 
     $reste_secondes = $tempsEnSecondes - $h * 3600; 

     $m = floor($reste_secondes/60); 
     $reste_secondes = $reste_secondes - $m * 60; 

     $s = round($reste_secondes, 3); 
     $s = number_format($s, 3, '.', ''); 

     $h = str_pad($h, 2, '0', STR_PAD_LEFT); 
     $m = str_pad($m, 2, '0', STR_PAD_LEFT); 
     $s = str_pad($s, 6, '0', STR_PAD_LEFT); 

     $temps = $h . ":" . $m . ":" . $s; 

     return $temps; 
    } 
İlgili konular