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 checkbox复选框值的获取与checkbox默认值输出方法
May 15 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
PDO::prepare讲解
Jan 29 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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 程序员也要学会使用“异常”
2009/06/16 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
详解Angular操作cookies方法
2018/06/01 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
python迭代器与生成器详解
2016/03/10 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Java及python正则表达式详解
2017/12/27 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
常用的10个Python实用小技巧
2020/08/10 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
医护人员英文求职信范文
2013/11/26 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
雷人标语集锦
2014/06/19 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
表扬信范文
2015/05/04 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python