Toplam milisaniyelerim var (yani 70370) ve bunu dakika olarak görüntülemek istiyorum: saniye: milisaniye yani 00: 00: 0000.Milisaniye miktarını dakika cinsinden nasıl biçimlendiririm: saniye: PHP cinsinden milisaniye?
Bunu PHP'de nasıl yapabilirim?
Toplam milisaniyelerim var (yani 70370) ve bunu dakika olarak görüntülemek istiyorum: saniye: milisaniye yani 00: 00: 0000.Milisaniye miktarını dakika cinsinden nasıl biçimlendiririm: saniye: PHP cinsinden milisaniye?
Bunu PHP'de nasıl yapabilirim?
bu tarih işlevleri kullanarak tuzağına düşmeyin: HP 5,3 DateInterval
nesnenin yararlanabilir! Burada sahip olduğunuz bir zaman aralığı, bir tarih değil. naif yaklaşım böyle bir şey yapmaktır:
date("h:i:s.u", $mytime/1000)
ama
tarih fonksiyonu (kurar) tarihleri için kullanıldığından, bu seferinde bu durumda bunu isteyeyim şekilde işlemez - Tek gereken Tarih/saat biçimlendirirken zaman dilimleri ve gün ışığından yararlanma, vb.Bunun yerine, muhtemelen sadece bazı basit matematik yapmak isteyecektir:
$input = 70135;
$uSec = $input % 1000;
$input = floor($input/1000);
$seconds = $input % 60;
$input = floor($input/60);
$minutes = $input % 60;
$input = floor($input/60);
// and so on, for as long as you require.
milisaniye Tutarı istediğiniz gibi göstermek için bu fonksiyonu deneyin:
<?php
function udate($format, $utimestamp = null)
{
if (is_null($utimestamp)) {
$utimestamp = microtime(true);
}
$timestamp = floor($utimestamp);
$milliseconds = round(($utimestamp - $timestamp) * 1000000);
return date(preg_replace('`(?<!\\\\)u`', sprintf("%06u", $milliseconds), $format), $timestamp);
}
echo udate('H:i:s.u'); // 19:40:56.78128
echo udate('H:i:s.u', 654532123.04546); // 16:28:43.045460
?>
@Kamil sizin sayıdır - bu kuşaklar için burada bu yüzden kod inlined. –
btw - Bu preg_replace'nin ne yaptığını bilmiyorum. Oldukça tuhaf görünüyor. –
@Dominic - Teşekkürler. Bir dahaki sefere yapacağım. –
PHP biçimlendirme milisaniye için yerleşik bir işlevi olduğuna inanırım sen matematik kullanmanız gerekir . kılavuzda belirtildiği gibi
:
u Mikrosaniye (PHP eklenmiştir 5.2.2) Örnek: 654321
Biz tarihi() fonksiyonu
için bir 'u' parametresiÖrnek:
if(($u/60) >= 60)
{
$u = mktime(0,($u/360));
}
date('H:i:s',$u);
Eğer P kullanıyorsanız
list($seconds, $millis) = explode('.', $milliseconds/1000);
$range = new DateInterval("PT{$seconds}S");
echo $range->format('%H:%I:%S') . ':' . str_pad($millis, 3, '0', STR_PAD_LEFT);
neden sadece matematik kullanabilirsiniz date()
ve biçimlendirme ile rahatsız? $ms
eğer milisaniye
echo floor($ms/60000).':'.floor(($ms%60000)/1000).':'.str_pad(floor($ms%1000),3,'0', STR_PAD_LEFT);
Hatalıydık, haklısınız;) ++ 1 –
Yine de bir kesmek olurdu, ancak değerlerin 24 saatten az olacağından eminseniz 'gmdate() 'yi kullanabilirsiniz. – soulmerge
Mükemmel! Bir milyona teşekkürler! – designvoid