加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

非常完整的php日期时间运算汇总

发布时间:2022-06-13 15:49:33 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要整理了关于php日期时间运算相关内容,涉及知识点较为全面,感兴趣的小伙伴们可以参考一下。 实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数 描述 hour 可
  这篇文章主要整理了关于php日期时间运算相关内容,涉及知识点较为全面,感兴趣的小伙伴们可以参考一下。
 
  实例讲解之前,先来介绍几个核心函数:
 
  mktime 函数
 
  mktime() 函数返回一个日期的 Unix 时间戳。
 
  参数               描述
 
  hour       可选。规定小时。
 
  minute   可选。规定分钟。
 
  second   可选。规定秒。
 
  month    可选。规定用数字表示的月。
 
  day         可选。规定天。
 
  year        可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
 
  is_dst  可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。
 
  自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。
 
  例子:mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:  
 
  <?php  
  echo(date("M-d-Y",mktime(0,0,0,12,36,2001)));  
  echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));  
  echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));  
  echo(date("M-d-Y",mktime(0,0,0,1,1,99)));  
  ?>
  输出:
 
  Jan-05-2002  
  Feb-01-2002  
  Jan-01-2001  
  Jan-01-1999  
  strtotime 函数
 
  strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。
 
  语法:strtotime(time,now)
 
  参数      描述
 
  30秒之后 strtotime( " +30 seconds " );
 
  20分钟之后 strtotime( " +20 minutes " );
 
  12个小时之后 strtotime( " +12 hours " );
 
  date 函数
 
  date() 函数格式化一个本地时间/日期。
 
  语法
 
  date(format,timestamp)
 
  date_default_timezone_set 函数
 
  date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。
 
  date_default_timezone_set(timezone)
 
  实例
 
  第一种情况是没有数据库,只是得到的日期值进行比较的话,那就得完全用php的时间日期函数计算了,如下:
 
  比如要计算2015-9-5到2015-9-18还有多少天:
 
  <?php  
  $startdate=strtotime("2015-9-5");  
  $enddate=strtotime("2015-9-18"); //上面的php时间日期函数已经把日期变成了时间戳,就是变成了秒。这样只要让两数值相减,然后把秒变成天就可以了,比较的简单,如下:  
  $days=round(($enddate-$startdate)/3600/24) ;  
  echo $days; //days为得到的天数;  
  ?>
  第二种 孩子的成长
 
  <?  
  date_default_timezone_set('Asia/Shanghai');  
  //以上一句为设置时区,其实不设也行,但是zde debug的时候会有提示,说什么不安全的函数…添上吧。  
     
  echo date('Y-m-d H:i:s').' 今天是'.date('Y').'年的第'.date('W').'周';  
   {  
   $ftime=strtotime($stime);  
   $fweeks=date('w',$ftime);  
   if ($fweeks==0) $fweeks=7;  
   $nweeks=date('w');  
   if ($nweeks==0) $nweeks=7;  
   $ftemp=strtotime(date('Y-m-d 00:00:00',$ftime))-$fweeks*60*60*24;  
   $ntemp=strtotime(date('Y-m-d 00:00:00',time()))+(7-$nweeks)*60*60*24;  
   //echo date('w',$ftemp)."<br/>....<br/>".date('w',$ntemp)."<br/>";  
   return ($ntemp-$ftemp)/60/60/24/7;  
  }  
     
  function daysofnow($stime)  
  {  
   $ftime=strtotime($stime);  
   return ceil(abs((time()-$ftime)/(60*60*24)));  
  }  
     
  function monthsofnow($stime)  
  {  
   $ftime=strtotime($stime);  
   $fmonth=date('m',$ftime);  
   $fyear=date('Y',$ftime);  
   $nmonth=date('m');  
   $nyear=date('Y');  
   $result=($nyear-$fyear)*12+$nmonth-$fmonth+1;  
   return $result;  
  }  
     
  function yearsofnow($stime)  
  {  
   $ftime=strtotime($stime);  
    return $result;  
  }  
  ?>
  第三种 情况:明天,下个月和明年的日期,就可以用以下的代码:
 
  $tomorrow = date('Y-m-d',mktime (0,0,0,date("m"),date("d")+1,date("Y")));  
  $nextmonth = date('Y-m',mktime (0,0,0,date("m")+1,date("d")+1,date("Y")));  
  $nextyear = date('Y',mktime (0,0,0,date("m"),date("d"),date("Y")+1));  
     
  echo $tomorrow.'<br/>';  
  echo $nextmonth.'<br/>';  
  echo $nextyear.'<br/>';  
  第四种情况:工作时间(刨除假日)
 
  <?  
  $startDate="2001-12-12";  
  $endDate="2002-11-1";  
     
  $holidayArr=array("05-01","05-02","10-01","10-01","10-02","10-03","10-04","10-05","01-26","01-27","01-28","01-29");  
   //假期日期数组,比方国庆,五一,春节等  
  $endWeek=2;  
   //周末是否双休.双休为2,仅仅星期天休息为1,没有休息为0  
     
  $beginUX=strtotime($startDate);  
  $endUX=strtotime($endDate);  
     
  for($n=$beginUX;$n<=$endUX;$n=$n+86400){  
    $totalHour+=10;//每天工作10小时  
  }  
  echo "开始日期:$startDate<BR>";  
  echo "结束日期:$endDate<BR>";  
  echo "共花了".$totalHour."小时";  
  ?>
  第五种情况:给出秒算小时
 
  <?php  
  function transform($sec){  
     
   $output = '';  
     
   $hours = floor($sec / 3600);  
   $remainSeconds = $sec % 3600;  
     
   $minutes = floor($remainSeconds / 60);  
   $seconds = $sec - $hours * 3600 - $minutes * 60;  
     
   if($sec >= 3600){  
   $output .= $hours.' h / ';  
   $output .= $minutes.' m / ';  
   }  
     
   if($sec >= 60 && $sec < 3600){  
   $output .= $minutes.' m / ';  
   }  
     
   return $output .= $seconds.' s ';  
  }  
     
  echo transform(3231803);  
     
  ?>

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读