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 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
php curl post 时出现的问题解决
Jan 30 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
Aug 15 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
PHP通过API获取手机号码归属地
May 28 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
php socket通信简单实现
Nov 18 PHP
php 运算符与表达式详细介绍
Nov 30 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
js中关于String对象的replace使用详解
2011/05/24 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
css配合jquery美化 select
2013/11/29 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
前端vue如何使用高德地图
2020/11/05 Javascript
Python中动态创建类实例的方法
2017/03/24 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
在python里面运用多继承方法详解
2019/07/01 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
PHP开发工程师面试问题集锦
2012/11/01 面试题
外贸销售员求职的自我评价
2013/11/23 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
意向协议书
2015/01/27 职场文书
自我工作评价范文
2015/03/06 职场文书
工商行政处罚决定书
2015/06/24 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
《静夜思》教学反思
2016/02/17 职场文书
《社戏》教学反思
2016/02/22 职场文书