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

最近在研究自己爱围脖的时候就要计算到恋爱天数,这需要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 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码!

(0)

相关推荐

  • php常用数学函数汇总

    本文实例汇总并分析了php常用数学函数.分享给大家供大家参考.具体分析如下: abs()函数定义和用法: 返回一个数的绝对值. 语法:abs(x),代码如下: 复制代码 代码如下: $abs=abs(-3.2);      //$abs=3.2 $abs2=abs(5);       //$abs2=5 $abs3=abs(-5);       //$abs3=5 ceil()函数定义和用法:向上舍入为最接近的整数. 语法ceil(x) 参数 描述 x 必需,一个数. 说明:返回不小于 x 的下

  • PHP中计算字符串相似度的函数代码

    similar_text - 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ] ) $first 必需.规定要比较的第一个字符串. $second 必需.规定要比较的第二个字符串. $percent 可选.规定供存储百分比相似度的变量名. 两个字符串的相似程度计算依据 Oliver [1993] 的描述进行.注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这

  • php学习之简单计算器实现代码

    复制代码 代码如下: <html> <head> <title>PHP实现简单计算器</title> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> </head> <?php //单路分支 if(isset($_GET["sub"])) { $num1=true;//数字1是否为空

  • php计算几分钟前、几小时前、几天前的几个函数、类分享

    一.函数实现实例1: 复制代码 代码如下: function time_tran($the_time){   $now_time = date("Y-m-d H:i:s",time()+8*60*60);   $now_time = strtotime($now_time);   $show_time = strtotime($the_time);   $dur = $now_time - $show_time;   if($dur < 0){    return $the_ti

  • PHP数学运算与数据处理实例分析

    本文实例讲述了PHP数学运算与数据处理方法.分享给大家供大家参考,具体如下: 一.数值数据类型 PHP中,数字或数值数据以及数学函数的使用很简单.基本来说,要处理两种数据类型:浮点数和整数.浮点数和整数值的内部表示分别是C数据类型double和int.类似于C,PHP中这些数据类型遵循同样的一组规则. PHP是一种松散类型的脚本语言,变量可以根据计算的需求改变数据类型.这就允许引擎动态地完成类型转换.所以,如果计算中包含数值和字符串,字符串会在完成计算之前转换为数值,而数值则会在与字符串连接之前

  • PHP高精确度运算BC函数库实例详解

    本文实例讲述了PHP高精确度运算BC函数库.分享给大家供大家参考,具体如下: <?php /*************************************************************************************** *php BC高精确度函数库 *php bc math 包含了:相加,比较,相除,相减,求余,相乘,n次方,配置默认小数点数目,求平方 *这些函数在涉及到有关金钱的计算时比较有用 **************************

  • PHP四舍五入精确小数位及取整

    进一法取整.四舍五入取整.忽略小数等的取整数方法大全 PHP取整数函数常用的四种方法,下面收集了四个函数:经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已--主要是:ceil,floor,round,intval PHP取整数函数常用的四种方法,下面收集了四个函数:经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已--主要是:ceil,floor,round,intval 一.ceil - 进一法取整 说明float ceil ( float value )

  • PHP使用数组实现矩阵数学运算的方法示例

    本文实例讲述了PHP使用数组实现矩阵数学运算的方法.分享给大家供大家参考,具体如下: 矩阵运算就是对两个数据表进行某种数学运算,并得到另一个数据表. 下面的例子中我们创建了一个基本完整的矩阵运算函数库,以便用于矩阵操作的程序中. 来自 PHP5 in Practice  (U.S.)Elliott III & Jonathan D.Eisenhamer <?php // A Library of Matrix Math functions. // All assume a Matrix de

  • 简单谈谈php浮点数精确运算

    bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值.这里大数直接用一个由0-9组成的string表示,计算结果返回的也是一个 string. bcadd - 将两个高精度数字相加 bccomp - 比较两个高精度数字,返回-1, 0, 1

  • PHP精确计算功能示例

    本文实例讲述了PHP精确计算功能.分享给大家供大家参考,具体如下: 引言:一定要确保数据的准确性.这是一个好的程序员的基本素养. <?php /** * 精确加法 * @param [type] $a [description] * @param [type] $b [description] */ function math_add($a,$b,$scale = '2') { return bcadd($a,$b,$scale); } /** * 精确减法 * @param [type] $a

  • PHP中浮点数计算比较及取整不准确的解决方法

    浮点数计算结果比较 一则浮点数计算例子如下: 复制代码 代码如下: $a = 0.2+0.7; $b = 0.9; var_dump($a == $b); 打印出的结果是:bool(false).也就是说在这里 0.2+0.7 的计算结果与 0.9 并不相等,这显然是有违我们的常识的. 对此问题,PHP官方手册曾又说明:显然简单的十进制分数如 0.2 不能在不丢失一点点精度的情况下转换为内部二进制的格式.这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数.例如,十进制的 1/3 变

随机推荐