PHP模拟SQL Server的两个日期处理函数


Posted in PHP onOctober 09, 2006

//在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢? 

//文件名:date.inc.php3 

//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。 

//如: 

//$today=mktime(0,0,0,date("m"),date("d"),date("Y")); 

/****模拟sqlserver中的dateadd函数******* 

$part 类型:string 

取值范围:year,month,day,hour,min,sec 

表示:要增加的日期的哪个部分 

$n 类型:数值 

表示:要增加多少,根据$part决定增加哪个部分 

可为负数 

$datetime类型:timestamp 

表示:增加的基数 

返回 类型:timestamp 

**************结束**************/ 

function dateadd($part,$n,$datetime){ 
$year=date("Y",$datetime); 
$month=date("m",$datetime); 
$day=date("d",$datetime); 
$hour=date("H",$datetime); 
$min=date("i",$datetime); 
$sec=date("s",$datetime); 
$part=strtolower($part); 
$ret=0; 
switch ($part) { 
case "year": 
$year+=$n; 
break; 
case "month": 
$month+=$n; 
break; 
case "day": 
$day+=$n; 
break; 
case "hour": 
$hour+=$n; 
break; 
case "min": 
$min+=$n; 
break; 
case "sec": 
$sec+=$n; 
break; 
default: 
return $ret; 
break; 

$ret=mktime($hour,$min,$sec,$month,$day,$year); 
return $ret; 
}  

/****模拟sqlserver中的datediff函数******* 

$part 类型:string 

取值范围:year,month,day,hour,min,sec 

表示:要增加的日期的哪个部分 

$date1,$date2 类型:timestamp 

表示:要比较的两个日期 

返回 类型:数值 

**************结束*(*************/ 

function datediff($part,$date1,$date2){ 
//$diff=$date2-$date1; 
$year1=date("Y",$date1); 
$year2=date("Y",$date2); 
$month2=date("m",$date2); 
$month1=date("m",$date1); 
$day2=date("d",$date2); 
$day1=date("d",$date1); 
$hour2=date("d",$date2); 
$hour1=date("d",$date1); 
$min2=date("i",$date2); 
$min1=date("i",$date1); 
$sec2=date("s",$date2); 
$sec1=date("s",$date1); 

$part=strtolower($part); 
$ret=0; 
switch ($part) { 
case "year": 
$ret=$year2-$year1; 
break; 
case "month": 
$ret=($year2-$year1)*12+$month2-$month1; 
break; 
case "day": 
$ret=(mktime(0,0,0,$month2,$day2,$year2)-mktime(0,0,0,$month1,$day1,$year1))/(3600*24); 
break; 
case "hour": 
$ret=(mktime($hour2,0,0,$month2,$day2,$year2)-mktime($hour1,0,0,$month1,$day1,$year1))/3600; 
break; 
case "min": 
$ret=(mktime($hour2,$min2,0,$month2,$day2,$year2)-mktime($hour1,$min1,0,$month1,$day1,$year1))/60; 
break; 
case "sec": 
$ret=$date2-$date1; 
break; 
default: 
return $ret; 
break; 

return $ret; 

PHP 相关文章推荐
web方式ftp
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
php的字符串用法小结
Jun 08 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
更改localhost为其他名字的方法
Feb 10 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
round robin权重轮循算法php实现代码
May 28 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
PHP操作Redis常用命令的实例详解
Dec 23 PHP
PHP实现的功能是显示8条基色色带
Oct 09 #PHP
提升PHP执行速度全攻略(上)
Oct 09 #PHP
提升PHP执行速度全攻略(下)
Oct 09 #PHP
如何过滤高亮显示非法字符
Oct 09 #PHP
无限级别菜单的实现
Oct 09 #PHP
综合图片计数器
Oct 09 #PHP
php,不用COM,生成excel文件
Oct 09 #PHP
You might like
SMARTY学习手记
2007/01/04 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
php无限极分类实现方法分析
2019/07/04 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
Python 实现链表实例代码
2017/04/07 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
英语系本科生个人求职信
2013/09/21 职场文书
1亿有多大教学反思
2014/05/01 职场文书
停电放假通知
2015/04/14 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技