Nasıl dakika içine milisaniye bir miktar biçimlendirmek: saniye: PHP milisaniye?

5 Cevap php

Ben milisaniye (yani 70370) toplam kestirmeniz var ve dakika olarak göstermek istiyorum: saniye: milisaniye 00:00:0000 yani.

PHP bunu nasıl yapabilirim?

5 Cevap

Bunun için tarih fonksiyonları kullanarak tuzağına düşmeyin! Burada ne var, bir zaman aralığı değil, bir tarihtir. Naif yaklaşım, böyle bir şey yapmak için:

date("h:i:s.u", $mytime / 1000)

tarih fonksiyonu (gasp!) tarihleri ​​için kullanılır çünkü, o zaman bu durumda onu isterim şekilde işlemez - Bir tarih / zaman biçimlendirirken bu hesaba, vs, saat dilimlerini ve gün ışığı tasarruf alır.

Bunun yerine, muhtemelen sadece bazı basit matematik yapmak isteyeceksiniz:

$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.

Ben PHP biçimlendirme milisaniye için yerleşik bir işlevi olduğuna inanıyorum, sen matematik kullanmanız gerekir.

Milisaniye miktarını istediğiniz şekilde 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
?>

Source

Kılavuzunda belirtildiği gibi:

u Microseconds (added in PHP 5.2.2) Örnek: 654321

Biz date () fonksiyonu için bir 'u' parametresi

Örnek:

if(($u/60) >= 60)
{
$u = mktime(0,($u / 360));
}
date('H:i:s',$u);