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 file_exists问题杂谈
May 07 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
php curl模拟post提交数据示例
Dec 31 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
php实现微信企业转账功能
Oct 02 PHP
YII框架http缓存操作示例
Apr 29 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
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
python中私有函数调用方法解密
2016/04/29 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
详解Python3注释知识点
2019/02/19 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
keras之权重初始化方式
2020/05/21 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
MySQL的索引你了解吗
2022/03/13 MySQL
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫