计算时间差方法汇总 不指定

jed , 2007-8-21 11:42 , 代码编程 , 评论(0) , 阅读(3346) , Via 本站原创 | |
问题:2007-08-19 6:10:16 和2007-08-20 16:11:03 怎样得出两个时间差来啊,得出结果是×小时×分×秒啊??


获得时间戳(笨办法):


function GetMkTime($dtime)
{
  if(!ereg("[^0-9]",$dtime)) return $dtime;
  $dt = Array(1970,1,1,0,0,0);
  $dtime = ereg_replace("[\r\n\t]|日|秒"," ",$dtime);
  $dtime = str_replace("年","-",$dtime);
  $dtime = str_replace("月","-",$dtime);
  $dtime = str_replace("时",":",$dtime);
  $dtime = str_replace("分",":",$dtime);
  $dtime = trim(ereg_replace("[ ]{1,}"," ",$dtime));
  $ds = explode(" ",$dtime);
  $ymd = explode("-",$ds[0]);
  if(isset($ymd[0])) $dt[0] = $ymd[0];
  if(isset($ymd[1])) $dt[1] = $ymd[1];
  if(isset($ymd[2])) $dt[2] = $ymd[2];
  if(strlen($dt[0])==2) $dt[0] = '20'.$dt[0];
  if(isset($ds[1])){
    $hms = explode(":",$ds[1]);
    if(isset($hms[0])) $dt[3] = $hms[0];
    if(isset($hms[1])) $dt[4] = $hms[1];
    if(isset($hms[2])) $dt[5] = $hms[2];
  }
 foreach($dt as $k=>$v){
   $v = ereg_replace("^0{1,}","",trim($v));
   if($v=="") $dt[$k] = 0;
 }
  $mt = @mktime($dt[3],$dt[4],$dt[5],$dt[1],$dt[2],$dt[0]);
  if($mt>0) return $mt;
  else return time();
}




方法一:



<?php
function getTimeDifference($time_one,$time_two)
{
  $stamp_one=strtotime($time_one);
  $stamp_two=strtotime($time_two);
  $time_diff=abs($stamp_one-$stamp_two);
  $diff_time=getdate($time_diff);
  $diff_time["year"]-=1970;
  $diff_time["mon"]-=1;
  $diff_time["mday"]-=1;
  // ar_dump($diff_time);
  return "时间相差:".$diff_time["year"]."年".$diff_time["mon"]."月".$diff_time["mday"]."日".$diff_time["hours"]."时".$diff_time["minutes"]."分".$diff_time["seconds"];
}
print getTimeDifference("2007-08-19 6:10:16","2007-08-20 16:11:03")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-08-19 16:11:03")."<br>";
print getTimeDifference("2005-08-19 6:10:16","2007-08-20 16:11:03")."<br>";

?>



方法二:



<?
function getTimeDifference($time_one,$time_two)
{
  $stamp_one=strtotime($time_one);
  $stamp_two=strtotime($time_two);
  $diff_time=($stamp_one-$stamp_two);
  $day=intval($diff_time/86400);
  $hour=intval(($diff_time-$day*86400)/3600);
  $minutes=intval(($diff_time-$day*86400-$hour*3600)/60);
  $seconds=$diff_time-$day*86400-$hour*3600-$minutes*60;
return "时间相差:".$day."天".$hour."小时".$minutes."分".$seconds."秒";
  }
$aa="2007-08-19 6:10:16";
$bb="2007-08-20 16:11:03";

  echo getTimeDifference($bb,$aa);

?>



方法三:



echo getTimeDifference('2007-08-19 6:10:16','2007-08-20 16:11:03');
  function getTimeDifference($time_one,$time_two)  //0年0月1日10时0分
{
  $stamp_one=strtotime($time_one);
  $stamp_two=strtotime($time_two);
  $time_diff=abs($stamp_one-$stamp_two);

  $diff_time = array();
  
  $diff_time["year"] = 0;
  if($time_diff > 31536000) //一年31536000秒
    $diff_time["year"] = floor($time_diff / 31536000);

  $time_diff = $time_diff - $diff_time["year"] * 31536000;


  $diff_time["month"] = 0;
  if($time_diff > 2592000) //一月2592000秒
    $diff_time["month"] = floor($time_diff / 2592000);
  
  $time_diff = $time_diff - $diff_time["month"] * 2592000;
  
  
  $diff_time["day"] = 0;
  if($time_diff > 86400) //一天86400秒
    $diff_time["day"] = floor($time_diff / 86400);
  
  $time_diff = $time_diff - $diff_time["day"] * 86400;  
  
  
  
  
  $diff_time["hour"] = 0;
  if($time_diff > 3600) //一小时3600秒
    $diff_time["hour"] = floor($time_diff / 3600);
  
  $time_diff = $time_diff - $diff_time["hour"] * 3600;    
  
  
  
  $diff_time["minute"] = 0;
  if($time_diff > 60) //一分60秒
    $diff_time["minute"] = floor($time_diff / 60);
  
  $time_diff = $time_diff - $diff_time["minute"] * 60;    
  
  
  
  
  return "时间相差:".$diff_time["year"]."年".$diff_time["month"]."月".$diff_time["day"]."日".$diff_time["hour"]."时".$diff_time["minute"]."分";
}  





方法四:



<?php
function getTimeDifference($time_one,$time_two)
{
  $stamp_one=strtotime($time_one);
  $stamp_two=strtotime($time_two);
  $time_diff=abs($stamp_one-$stamp_two);
  / diff_time=getdate($time_diff);
  $days=intval($time_diff/3600/24);
  $hours=intval( ($time_diff - (3600*24*$days)) / 3600);
  $minutes=intval(($time_diff- (3600*24)*$days - 3600*$hours )/60);
  $seconds=$time_diff%60;

  return "时间相差:".$days."日".$hours."时".$minutes."分".$seconds."秒";
}
print getTimeDifference("2007-08-19 6:10:16","2007-08-19 6:10:16")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-08-19 16:05:00")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-10-19 6:15:14")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-08-19 6:12:16")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-08-19 8:10:16")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-08-17 6:10:16")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2007-10-19 6:10:16")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2009-08-19 6:10:16")."<br>";
print getTimeDifference("2007-08-19 6:10:16","2027-08-19 6:10:16")."<br>";
?>

Tags:
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]