Yakın dakikaya yuvarlak php damgası

3 Cevap php

PHP bir unix zaman damgası var varsayarsak. Nasıl benim php damgası yakın dakikaya tamamlayabilirler? Örneğin 16:45:00 olarak 16:45:34 karşı?

Yardımlarınız için teşekkürler! :)

3 Cevap

Damgası sadece bir Unix tarzı damgası ise

$rounded = round($time/60)*60;

Eğer belirtilen tarzı ise, sadece geri Unix tarzı zaman damgası dönüştürmek ve olabilir

$rounded = date('H:i:s', round(strtotime('16:45:34')/60)*60);

round() o x - 0.5 <= x < x + 0.5 arasındaki değerleri için x yuvarlar sağlanması kolay bir yol olarak kullanılır. Her zaman (belirtildiği gibi) her zaman aşağı yuvarlamak istedim Eğer modül işlevini floor() kullanabilir ya da olabilir

$rounded = floor($time/60)*60;
//or
$rounded = time() - time() % 60;

Alternatif bir şudur:

$t = time();
$t -= $t % 60;
echo $t;

PHP time() her çağrı geri OS tüm yol yığını aracılığıyla gitmek zorunda olduğunu okudum. Bu 5.3 + veya değil değişmiş olup olmadığını bilmiyorum? Yukarıdaki kod) (zaman çağrıları azaltır ...

Benchmark kodu:

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time(); $t -= $t %60; $e = microtime(TRUE); echo $e - $s . "\n\n";'

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = time() - time() % 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'

$ php -r '$s = microtime(TRUE); for ($i = 0; $i < 10000000; $i++); $t = floor(time() / 60) * 60; $e = microtime(TRUE); echo $e - $s . "\n\n";'

İlginçtir, 10.000.000 itterations üzerinde her üç aslında aynı zaman yapmak ;)

Ah baraj. Beni ona yendi :)

Bu da benim çözüm oldu.

<?php 
$round = ( round ( time() / 60 ) * 60 );

echo date('h:i:s A', $round );
?>

http://php.net/manual/en/function.time.php