在php和MySql中计算时间差的方法详解
在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参数可以有以下值:
(以下分别为:常数值描述)
vbUseSystem0使用区域语言支持(NLS)API设置。
vbSunday1星期日(默认)
vbMonday2星期一
vbTuesday3星期二
vbWednesday4星期三
vbThursday5星期四
vbFriday6星期五
vbSaturday7星期六
firstweekofyear参数可以有以下值:
(以下分别为:常数值描述)
vbUseSystem0使用区域语言支持(NLS)API设置。
vbFirstJan11由1月1日所在的星期开始(默认)。
vbFirstFourDays2由在新年中至少有四天的第一周开始。
vbFirstFullWeek3由在新的一年中第一个完整的周开始。
说明: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参数可以有以下值:
(以下分别为:常数值描述)
vbUseSystem0使用区域语言支持(NLS)API设置。
vbSunday1星期日(默认)
vbMonday2星期一
vbTuesday3星期二
vbWednesday4星期三
vbThursday5星期四
vbFriday6星期五
vbSaturday7星期六
firstweekofyear参数可以有以下值:
(以下分别为:常数值描述)
vbUseSystem0使用区域语言支持(NLS)API设置。
vbFirstJan11由1月1日所在的星期开始(默认)。
vbFirstFourDays2由在新年中至少有四天的第一周开始。
vbFirstFullWeek3由在新的一年中第一个完整的周(不跨年度)开始。
说明:DatePart函数用于计算日期并返回指定的时间间隔。例如使用DatePart计算某一天是星期几或当前的时间。
其中firstdayofweek参数会影响使用“w”和“ww”间隔符号的计算。
如果date是日期文字,则指定的年度会成为日期的固定部分。但是如果date被包含在引号(“”)中,并且省略年份,则在代码中每次计算date表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码!
以上所述就是本文的全部内容了,希望能够对大家熟练掌握php有所帮助。
请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!