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无限分类的类
Jan 02 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
php下封装较好的数字分页方法
Nov 23 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
Aug 23 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP 转义使用详解
2013/07/15 PHP
php三元运算符知识汇总
2015/07/02 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
jQuery读取XML文件内容的方法
2015/03/09 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
webpack3+React 的配置全解
2017/08/21 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
Python编写生成验证码的脚本的教程
2015/05/04 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
学习党章思想汇报
2014/01/07 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
社区工作者个人总结
2015/02/28 职场文书
企业愿景口号
2015/12/25 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
nginx之内存池的实现
2022/06/28 Servers