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 5.0对象模型深度探索之对象复制
Mar 27 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
3种php生成唯一id的方法
Nov 23 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 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生成压缩文件实例
2015/02/07 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
Python正则表达式使用经典实例
2016/06/21 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
Python变量类型知识点总结
2019/02/18 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
质量月口号
2014/06/20 职场文书
先进个人申报材料
2014/12/30 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Python操作CSV格式文件的方法大全
2021/07/15 Python
详解PyTorch模型保存与加载
2022/04/28 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python