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

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

  • ASP(VBScript)日期时间函数的使用-一
  • ASP(VBScript)日期时间函数的使用-二
  • ASP(VBScript)日期时间函数的使用-三

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


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

Date 函数

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

描述:返回当前系统日期。

下面主要说明之:

语法:Date

例:计算1998年5月3日到1999-6-5的天数:

DateAdd 函数

复制代码 代码如下:
$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为得到的天数;

语法:DateAdd(interval, number, date)

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

  • interval:必选。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。
  • number:必选。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。
  • date:必选。Variant 或要添加 interval 的表示日期的文字。

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

interval 参数可以有以下值:

DateDiff 函数

yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数)
、ww (周) 、h (小时) 、n (分钟) 、s (秒)

描述:返回两个日期之间的时间间隔。

说明:可用 DateAdd 函数从日期中添加或减去指定时间间隔。例如可以使用
DateAdd 从当天算起 30 天以后的日期或从现在算起 45 分钟以后的时间。要向
date
添加以“日”为单位的时间间隔,可以使用“一年的日数”(“y”)、“日”(“d”)或“一周的日数”(“w”)。

语法:

DateAdd 函数不会返回无效日期。如下示例将 95 年 1 月 31
日加上一个月:NewDate = DateAdd(“m”, 1, “31-Jan-95”)
在这个例子中,DateAdd 返回 95 年 2 月 28 日,而不是 95 年 2 月 31
日。如果 date 为 96 年 1 月 31 日,则返回 96 年 2 月 29 日,这是因为
1996 是闰年。如果计算的日期是在公元 100 年之前则会产生错误。如果 number
不是 Long 型值,则在计算前四舍五入为最接近的整数。

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

DateDiff 函数

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

描述:返回两个日期之间的时间间隔。

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

语法:DateDiff(interval, date1, date2 [,firstdayofweek[,
firstweekofyear>)

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

  • interval:必选。字符串表达式,表示用于计算 date1 和 date2
    之间的时间间隔。有关数值,请参阅“设置”部分。
  • date1, date2:必选。日期表达式。用于计算的两个日期。
  • firstdayofweek:可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
  • firstweekofyear:可选。指定一年中第一周的常数。如果没有指定,则默认为
    1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

interval 参数可以有以下值:

interval 参数可以有以下值:

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

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 设置。
  • vbSunday 1 星期日(默认)
  • vbMonday 2 星期一
  • vbTuesday 3 星期二
  • vbWednesday 4 星期三
  • vbThursday 5 星期四
  • vbFriday 6 星期五
  • vbSaturday 7 星期六

vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。
说明:DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。

firstweekofyear 参数可以有以下值:

例如可以使用 DateDiff
计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

(以下分别为:常数 值 描述)

要计算 date1 和 date2
相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval
为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。

  • vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
  • vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
  • vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
  • vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。

如果 date1 是星期一,则 DateDiff 计算到 date2
之前星期一的数目。此结果包含 date2 而不包含 date1。

说明: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 表示相差一个年份。

如果 interval 是“周”(“ww”),则 DateDiff
函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2
之间星期日的数目。

DatePart 函数

如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1
是星期日,也不会计算 date1。

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

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

语法:DatePart(interval, date[, firstdayofweek[, firstweekofyear>)

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

  • interval:必选。字符串表达式,表示要返回的时间间隔。有关数值,请参阅“设置”部分。
  • date: 必选。要计算的日期表达式。
  • firstdayofweek:可选。指定星期中的第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
  • firstweekofyear:可选。指定一年中第一周的常数。如果没有指定,则默认为
    1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

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

interval 参数可以有以下值:

DatePart 函数

yyyy (年) 、q (季度) 、m (月) 、y (一年的日数) 、d (日) 、w (一周的日数)
、ww (周) 、h (小时) 、n (分钟) 、s (秒)

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

firstdayofweek 参数可以有以下值:

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 设置。
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 由在新的一年中第一个完整的周(不跨年度)开始。

vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周(不跨年度)开始。
说明:DatePart 函数用于计算日期并返回指定的时间间隔。例如使用 DatePart
计算某一天是星期几或当前的时间。

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

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

  • ASP(VBScript)日期时间函数的使用-一
  • ASP(VBScript)日期时间函数的使用-二
  • ASP(VBScript)日期时间函数的使用-三

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


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

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注