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 printf输出格式使用说明
Dec 05 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
php实现上传图片文件代码
Jul 19 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
老生常谈PHP中的数据结构:DS扩展
Jul 17 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
PHP数组去重的更快实现方式分析
May 09 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生成静态HTML文档的原理
2012/10/29 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
IE9下html5初试小刀
2010/09/21 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
python 统计代码耗时的几种方法分享
2021/04/02 Python
Python+Appium新手教程
2021/04/17 Python
关于Numpy之repeat、tile的用法总结
2021/06/02 Python