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
自己动手做一个SQL解释器
Oct 09 PHP
PHP日期时间函数的高级应用技巧
May 16 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
destoon官方标签大全
Jun 20 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
Laravel实现ApiToken认证请求
Oct 14 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
php中strtotime函数性能分析
2016/11/20 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript div 弹出可拖动窗口
2009/02/26 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
js中运算符&amp;&amp; 和 || 的使用记录
2014/08/21 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
幼儿教师培训感言
2014/03/08 职场文书
小学英语课后反思
2014/04/26 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
管理失职检讨书
2015/05/05 职场文书
师范生见习自我总结
2015/06/23 职场文书
学习经验交流会策划书
2015/11/02 职场文书
电力培训学习心得体会
2016/01/11 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技