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
php中定义网站根目录的常用方法
Aug 08 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
Laravel框架表单验证详解
Sep 04 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
PHP中rename()函数的妙用讲解
Feb 28 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
php实现微信和支付宝支付的示例代码
Aug 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
js实现删除li标签一行内容
2019/04/16 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
flask中过滤器的使用详解
2018/08/01 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python 提取文件指定列的方法示例
2019/08/07 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
什么是聚集索引和非聚集索引
2012/01/17 面试题
专业实习自我鉴定
2013/10/29 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
安全检查管理制度
2014/02/02 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
2014社区三八妇女节活动总结
2014/03/01 职场文书
党员承诺践诺书
2014/05/20 职场文书
国庆庆典邀请函
2015/02/02 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python