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! :)
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 ;)