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


Posted in PHP onMarch 27, 2015

在php中计算时间差有时候是件麻烦的事!不过只要你掌握了日期时间函数的用法那这些也就变的简单了。

最近在研究自己爱围脖的时候就要计算到恋爱天数,这需要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: 必选。要计算的日期表达式。
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 由在新的一年中第一个完整的周(不跨年度)开始。
说明:DatePart 函数用于计算日期并返回指定的时间间隔。例如使用 DatePart 计算某一天是星期几或当前的时间。

其中firstdayofweek 参数会影响使用“w”和“ww”间隔符号的计算。

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

以上所述就是本文的全部内容了,希望能够对大家熟练掌握php有所帮助。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

PHP 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
php简单实现多语言切换的方法
May 09 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
php实现头像上传预览功能
Apr 27 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP连接access数据库
Mar 27 #PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 #PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 #PHP
php简单实现无限分类树形列表的方法
Mar 27 #PHP
PHP调用.NET的WebService 简单实例
Mar 27 #PHP
PHP输出日历表代码实例
Mar 27 #PHP
使用php转义输出HTML到JavaScript
Mar 27 #PHP
You might like
php操作csv文件代码实例汇总
2014/09/22 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python编程中的异常处理教程
2015/08/21 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python数学形态学实例分析
2019/09/06 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
维德科技C#面试题笔试题
2015/12/09 面试题
市场营销毕业生自荐信
2013/11/23 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
北京奥运会口号
2014/06/21 职场文书
单位消防安全责任书
2014/07/23 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
公司联欢会主持词
2015/07/04 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫