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 相关文章推荐
关于BIG5-HKSCS的解决方法
Mar 20 PHP
php header示例代码(推荐)
Sep 08 PHP
php缓存技术详细总结
Aug 07 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
详解php实现页面静态化原理
Jun 21 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
javaScript中的空值和假值
2017/12/18 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
详解vue 组件
2020/06/11 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
Python优先队列实现方法示例
2017/09/21 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
求职简历推荐信范文
2013/12/02 职场文书
通信生自我鉴定
2014/01/18 职场文书
教师个人鉴定材料
2014/02/08 职场文书
优秀实习生感言
2014/03/01 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
参加招聘会后的感想
2015/08/10 职场文书
合同补充协议书
2016/03/24 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书