php中的时间处理


Posted in PHP onOctober 09, 2006

<?
/**
* 转换为UNIX时间戳
*/
function gettime($d) {
  if(is_numeric($d))
    return $d;
  else {
    if(! is_string($d)) return 0;
    if(ereg(":",$d)) {
      $buf = split(" +",$d);
      $year = split("[-/]",$buf[0]);
      $hour = split(":",$buf[1]);
      if(eregi("pm",$buf[2]))
        $hour[0] += 12;
      return mktime($hour[0],$hour[1],$hour[2],$year[1],$year[2],$year[0]);
    }else {
      $year = split("[-/]",$d);
      return mktime(0,0,0,$year[1],$year[2],$year[0]);
    }
  }
}

/**
*
* DateAdd(interval,number,date)
* 返回已添加指定时间间隔的日期。
* Inetrval为表示要添加的时间间隔字符串表达式,例如分或天
* number为表示要添加的时间间隔的个数的数值表达式
* Date表示日期
*
* Interval(时间间隔字符串表达式)可以是以下任意值:
*  yyyy year年
*  q Quarter季度
*  m Month月
*  y Day of year一年的数
*  d Day天
*  w Weekday一周的天数
*  ww Week of year周
*  h Hour小时
*  n Minute分
*  s Second秒
*  w、y和d的作用是完全一样的,即在目前的日期上加一天,q加3个月,ww加7天。
*/
function DateAdd($interval, $number, $date) {
  $date = gettime($date);
  $date_time_array = getdate($date);
  $hours = $date_time_array["hours"];
  $minutes = $date_time_array["minutes"];
  $seconds = $date_time_array["seconds"];
  $month = $date_time_array["mon"];
  $day = $date_time_array["mday"];
  $year = $date_time_array["year"];
  switch ($interval) {
    case "yyyy": $year +=$number; break;
    case "q": $month +=($number*3); break;
    case "m": $month +=$number; break;
    case "y":
    case "d":
    case "w": $day+=$number; break;
    case "ww": $day+=($number*7); break;
    case "h": $hours+=$number; break;
    case "n": $minutes+=$number; break;
    case "s": $seconds+=$number; break;
  }
  $timestamp = mktime($hours ,$minutes, $seconds,$month ,$day, $year);
  return $timestamp;
}

/**
* DateDiff(interval,date1,date2)
* 返回两个日期之间的时间间隔
* intervals(时间间隔字符串表达式)可以是以下任意值:
*   w  周
*   d  天
*   h  小时
*   n  分钟
*   s  秒
*/
function DateDiff ($interval, $date1,$date2) {
  // 得到两日期之间间隔的秒数
  $timedifference = gettime($date2) - gettime($date1);
  switch ($interval) {
    case "w": $retval = bcdiv($timedifference ,604800); break;
    case "d": $retval = bcdiv( $timedifference,86400); break;
    case "h": $retval = bcdiv ($timedifference,3600); break;
    case "n": $retval = bcdiv( $timedifference,60); break;
    case "s": $retval = $timedifference; break;
  }
  return $retval;
}

?>

<?
// 测试例
$d1 = "2002-01-11";
$d2 = date("Y-m-d",dateadd("d",15,$d1));

echo $d1."的". datediff("d",$d1,$d2)."天后是$d2<br>";
echo $d1."的10天前是".date("Y-m-d",dateadd("d",-10,$d1))."<br>";
$d3 = date("Y/m/d H:i:s");
echo "现在是".$d3."距离2002/2/12 12:59:59还有".datediff("s",$d3,"2002/2/12 12:59:59")."秒<br>";

?>

PHP 相关文章推荐
PHP产生随机字符串函数
Dec 06 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
php explode函数实例代码
Feb 27 PHP
php中常用的预定义变量小结
May 09 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
CI框架Session.php源码分析
Nov 03 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
thinkphp分页集成实例
Jul 24 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
用php写的serv-u的web申请账号的程序
Oct 09 #PHP
PHP系统流量分析的程序
Oct 09 #PHP
PHP的栏目导航程序
Oct 09 #PHP
php的计数器程序
Oct 09 #PHP
PHP的开合式多级菜单程序
Oct 09 #PHP
PHP如何透过ODBC来存取数据库
Oct 09 #PHP
在线短消息收发的程序,不用数据库
Oct 09 #PHP
You might like
聊天室php&amp;mysql(四)
2006/10/09 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
Javascript事件实例详解
2013/11/06 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
python opencv之分水岭算法示例
2018/02/24 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
pandas apply多线程实现代码
2020/08/17 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
开办加工厂创业计划书
2014/01/03 职场文书
股权转让协议书
2014/04/12 职场文书
小学生作文评语
2014/04/18 职场文书
警察群众路线整改措施
2014/09/26 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
社区敬老月活动总结
2015/05/07 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python