- 相關(guān)推薦
php中計(jì)算時(shí)間差的方法有哪些
在php中計(jì)算時(shí)間差有時(shí)候是件麻煩的事!不過(guò)只要你掌握了日期時(shí)間函數(shù)的用法那這些也就變的簡(jiǎn)單了。
一個(gè)簡(jiǎn)單的例子就是計(jì)算借書(shū)的天數(shù),這需要php根據(jù)每天的日期進(jìn)行計(jì)算,下面就來(lái)談?wù)剬?shí)現(xiàn)這種日期計(jì)算的幾種方法:
(1) 如果有數(shù)據(jù)庫(kù)就很容易了!若是MSSQL可以使用觸發(fā)器!用專(zhuān)門(mén)計(jì)算日期差的函數(shù)datediff()便可!
若是MYSQL那就用兩個(gè)日期字段的差值計(jì)算的計(jì)算結(jié)果保存在另一個(gè)數(shù)值型字段中!用時(shí)調(diào)用便可!
(2)如果沒(méi)有數(shù)據(jù)庫(kù),那就得完全用php的時(shí)間日期函數(shù)!下面主要說(shuō)明之:
例:計(jì)算1998年5月3日到1999-6-5的天數(shù):
<?php
$startdate=mktime("0","0","0","5","3","1998");
$enddate=mktime("0","0","0","6","5","1999");
//所得到的值為從1970-1-1到參數(shù)時(shí)間的總秒數(shù):是整數(shù).那么
//下面的代碼就好編多了:
$days=round(($enddate-$startdate)/3600/24) ;
echo $days;
//days為得到的天數(shù);
?>
若mktime()中的參數(shù)缺省,那表示使用當(dāng)前日期,這樣便可計(jì)算從借書(shū)日期至今的天數(shù).
【拓展閱讀】
php計(jì)算函數(shù)執(zhí)行時(shí)間的方法
我們可以通過(guò)在程序的前后分別記錄開(kāi)始和結(jié)束時(shí)間,兩個(gè)時(shí)間差就是程序的執(zhí)行時(shí)間。
<?php
$long_str = "this is a test to see how much time md5 function takes to execute over this string";
// start timing from here
$start = microtime(true);
// function to test
$md5 = md5($long_str);
$elapsed = microtime(true) - $start;
echo "That took $elapsed seconds.\n";
?>
運(yùn)行結(jié)果如下:
That took 7.1525573730469E-6 seconds.
php 計(jì)算函數(shù)執(zhí)行時(shí)間的方法及獲得微妙的方法
// 獲得微妙方法
function getMillisecond()
{
list($s1, $s2) = explode(' ', microtime());
return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
}
原理:分別記錄函數(shù)開(kāi)始時(shí)間和結(jié)束時(shí)間,然后時(shí)間差就是函數(shù)執(zhí)行的時(shí)間
<?php
$start_time = microtime(true);
for($i=1;$i<=1000;$i++){
echo $i.'<br>';
}
$end_time = microtime(true);
echo '循環(huán)執(zhí)行時(shí)間為:'.($end_time-$start_time).' s';
?>
【php中計(jì)算時(shí)間差的方法有哪些】相關(guān)文章:
PHP處理密碼的方法有哪些10-18
PHP關(guān)聯(lián)鏈接添加方法有哪些07-12
php實(shí)現(xiàn)cookie加密的方法有哪些09-23
PHP錯(cuò)誤類(lèi)型及屏蔽方法有哪些11-06
PHP 7.1 中的重大更新有哪些11-08