在php和MySql中计算时间差的方法


Posted in PHP onApril 22, 2011

最近在研究自己爱围脖的时候就要计算到恋爱天数,这需要php根据每天的日期进行计算,下面就来谈谈实现这种日期计算的几种方法:

(1) 如果有数据库就很容易了!若是MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可! 若是MYSQL那就用两个日期字段的差值计算的计算结果保存在另一个数值型字段中!用时调用便可!

(2)如果没有数据库,那就得完全用php的时间日期函数!

下面主要说明之: 例:计算1998年5月3日到1999-6-5的天数:

$startdate=mktime("0","0","0","5","3","1998"); $enddate=mktime("0","0","0","6","5","1999"); //所得到的值为从1970-1-1到参数时间的总秒数结果是整数.那么下面的代码就好编多了 
$days=round(($enddate-$startdate)/3600/24) ; 
echo $days;

$days为得到的天数; 若mktime()中的参数缺省,那表示使用当前日期,这样便可计算从借书日期至今的天数。

最后说一下SQL的计算方法:

DateDiff 函数
描述:返回两个日期之间的时间间隔。
语法:

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear>)

interval: 必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。

date1, date2: 必选。日期表达式。用于计算的两个日期。

firstdayofweek: 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。

firstweekofyear: 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

interval 参数可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数) 、ww (周) 、h (小时) 、n (分钟) 、s (秒)

firstdayofweek 参数可以有以下值:
(以下分别为:常数 值 描述)
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbSunday 1 星期日(默认)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 参数可以有以下值:
(以下分别为:常数 值 描述)
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。

说明:DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。

如果 date1 晚于 date2,则 DateDiff 函数返回负数。
firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (” “) 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。

DatePart 函数

描述:返回给定日期的指定部分。
语法:

DatePart(interval, date[, firstdayofweek[, firstweekofyear>)

DatePart: 函数的语法有以下参数:

interval: 必选。字符串表达式,表示要返回的时间间隔。有关数值,请参阅“设置”部分。

date: 必选。要计算的日期表达式。

firstdayof week: 可选。指定星期中的第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。

firstweekofyear: 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

interval 参数可以有以下值:
yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数) 、ww (周) 、h (小时) 、n (分钟) 、s (秒)

firstdayofweek 参数可以有以下值:
(以下分别为:常数 值 描述)
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbSunday 1 星期日(默认)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 参数可以有以下值:
(以下分别为:常数 值 描述)
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周(不跨年度)开始。

说明:DatePart 函数用于计算日期并返回指定的时间间隔。例如使用 DatePart 计算某一天是星期几或当前的时间。

firstdayofweek 参数会影响使用“w”和“ww”间隔符号的计算。
如果 date 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date 被包含在引号 (” “) 中,并且省略年份,则在代码中每次计算 date 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码!

PHP 相关文章推荐
mysql 全文搜索 技巧
Apr 27 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
php实现的顺序线性表示例
May 04 PHP
PHP遍历二维数组的代码
Apr 22 #PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 #PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 #PHP
php中利用post传递字符串重定向的实现代码
Apr 21 #PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 #PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 #PHP
flash用php连接数据库的代码
Apr 21 #PHP
You might like
基于PHP文件操作的详解
2013/06/05 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JavaScript中的关键字"VAR"使用详解 分享
2013/07/31 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
Python set集合类型操作总结
2014/11/07 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python实现求数列和的方法示例
2018/01/12 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
理货员的岗位职责
2013/11/23 职场文书
公司合并协议书范本
2014/09/30 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang