在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 相关文章推荐
IIS7.X配置PHP运行环境小结
Jun 09 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
php获取操作系统语言代码
Nov 04 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
PHP序列化操作方法分析
Sep 28 PHP
PHP二维数组去重算法
Dec 17 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
php实现的顺序线性表示例
May 04 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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 字符串函数收集
2010/03/29 PHP
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php面向对象值单例模式
2016/05/03 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
js jquery数组介绍
2012/07/15 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
详解python中的Turtle函数库
2018/11/19 Python
pytorch打印网络结构的实例
2019/08/19 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
岗位职责的含义
2013/11/17 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
发票退票证明
2015/06/24 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技