溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

在php和MySql中計(jì)算時(shí)間差的方法

發(fā)布時(shí)間:2021-06-30 17:37:56 來(lái)源:億速云 閱讀:141 作者:chen 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“在php和MySql中計(jì)算時(shí)間差的方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“在php和MySql中計(jì)算時(shí)間差的方法”吧!

在php中計(jì)算時(shí)間差有時(shí)候是件麻煩的事!不過(guò)只要你掌握了日期時(shí)間函數(shù)的用法那這些也就變的簡(jiǎn)單了。

最近在研究自己愛(ài)圍脖的時(shí)候就要計(jì)算到戀愛(ài)天數(shù),這需要php根據(jù)每天的日期進(jìn)行計(jì)算,下面就來(lái)談?wù)剬?shí)現(xiàn)這種日期計(jì)算的幾種方法:

(1) 如果有數(shù)據(jù)庫(kù)就很容易了!若是MSSQL可以使用觸發(fā)器!用專(zhuān)門(mén)計(jì)算日期差的函數(shù)datediff()便可!若是MYSQL那就用兩個(gè)日期字段的差值計(jì)算的計(jì)算結(jié)果保存在另一個(gè)數(shù)值型字段中!用時(shí)調(diào)用便可!

(2)如果沒(méi)有數(shù)據(jù)庫(kù),那就得完全用php的時(shí)間日期函數(shù)!

下面主要說(shuō)明之:

例:計(jì)算1998年5月3日到1999-6-5的天數(shù):

復(fù)制代碼 代碼如下:


$startdate=mktime("0","0","0","5","3","1998"); $enddate=mktime("0","0","0","6","5","1999"); //所得到的值為從1970-1-1到參數(shù)時(shí)間的總秒數(shù)結(jié)果是整數(shù).那么下面的代碼就好編多了
$days=round(($enddate-$startdate)/3600/24) ;
echo $days;

其中$days為得到的天數(shù);

若mktime()中的參數(shù)缺省,那表示使用當(dāng)前日期,這樣便可計(jì)算從借書(shū)日期至今的天數(shù)。

最后說(shuō)一下SQL的計(jì)算方法:

DateDiff 函數(shù)

描述:返回兩個(gè)日期之間的時(shí)間間隔。

語(yǔ)法:

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear>)
interval: 必選。字符串表達(dá)式,表示用于計(jì)算 date1 和 date2 之間的時(shí)間間隔。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。

date1, date2: 必選。日期表達(dá)式。用于計(jì)算的兩個(gè)日期。

firstdayofweek: 可選。指定星期中第一天的常數(shù)。如果沒(méi)有指定,則默認(rèn)為星期日。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。

firstweekofyear: 可選。指定一年中第一周的常數(shù)。如果沒(méi)有指定,則默認(rèn)為 1 月 1 日所在的星期。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。

interval 參數(shù)可以有以下值:

yyyy (年)
q (季度)
m (月)
y (一年的日數(shù))
d (日)
w (一周的日數(shù))
ww (周)
h (小時(shí))
n (分鐘)
s (秒)
firstdayofweek 參數(shù)可以有以下值:

(以下分別為:常數(shù) 值 描述)

vbUseSystem 0 使用區(qū)域語(yǔ)言支持 (NLS) API 設(shè)置。
vbSunday 1 星期日(默認(rèn))
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 參數(shù)可以有以下值:

(以下分別為:常數(shù) 值 描述)

vbUseSystem 0 使用區(qū)域語(yǔ)言支持 (NLS) API 設(shè)置。
vbFirstJan1 1 由 1 月 1 日所在的星期開(kāi)始(默認(rèn))。
vbFirstFourDays 2 由在新年中至少有四天的第一周開(kāi)始。
vbFirstFullWeek 3 由在新的一年中第一個(gè)完整的周開(kāi)始。
說(shuō)明:DateDiff 函數(shù)用于判斷在兩個(gè)日期之間存在的指定時(shí)間間隔的數(shù)目。

例如可以使用 DateDiff 計(jì)算兩個(gè)日期相差的天數(shù),或者當(dāng)天到當(dāng)年最后一天之間的星期數(shù)。

要計(jì)算 date1 和 date2 相差的天數(shù),可以使用“一年的日數(shù)”(“y”)或“日”(“d”)。當(dāng) interval 為“一周的日數(shù)”(“w”)時(shí),DateDiff 返回兩個(gè)日期之間的星期數(shù)。

如果 date1 是星期一,則 DateDiff 計(jì)算到 date2 之前星期一的數(shù)目。此結(jié)果包含 date2 而不包含 date1。

如果 interval 是“周”(“ww”),則 DateDiff 函數(shù)返回日歷表中兩個(gè)日期之間的星期數(shù)。函數(shù)計(jì)算 date1 和 date2 之間星期日的數(shù)目。

如果 date2 是星期日,DateDiff 將計(jì)算 date2,但即使 date1 是星期日,也不會(huì)計(jì)算 date1。

如果 date1 晚于 date2,則 DateDiff 函數(shù)返回負(fù)數(shù)。 firstdayofweek 參數(shù)會(huì)對(duì)使用“w”和“ww”間隔符號(hào)的計(jì)算產(chǎn)生影響。

如果 date1 或 date2 是日期文字,則指定的年度會(huì)成為日期的固定部分。但是如果 date1 或 date2 被包括在引號(hào) (“ ”) 中并且省略年份,則在代碼中每次計(jì)算 date1 或 date2 表達(dá)式時(shí),將插入當(dāng)前年份。這樣就可以編寫(xiě)適用于不同年份的程序代碼。

在 interval 為“年”(“yyyy”)時(shí),比較 12 月 31 日和來(lái)年的 1 月 1 日,雖然實(shí)際上只相差一天,DateDiff 返回 1 表示相差一個(gè)年份。

DatePart 函數(shù)

描述:返回給定日期的指定部分。 語(yǔ)法:

DatePart(interval, date[, firstdayofweek[, firstweekofyear>)
DatePart: 函數(shù)的語(yǔ)法有以下參數(shù):
interval: 必選。字符串表達(dá)式,表示要返回的時(shí)間間隔。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。
date: 必選。要計(jì)算的日期表達(dá)式。
firstdayofweek: 可選。指定星期中的第一天的常數(shù)。如果沒(méi)有指定,則默認(rèn)為星期日。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。
firstweekofyear: 可選。指定一年中第一周的常數(shù)。如果沒(méi)有指定,則默認(rèn)為 1 月 1 日所在的星期。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。
其中interval 參數(shù)可以有以下值: yyyy (年) 、q (季度) 、m (月) 、y (一年的日數(shù)) 、d (日) 、w (一周的日數(shù)) 、ww (周) 、h (小時(shí)) 、n (分鐘) 、s (秒)

其中firstdayofweek 參數(shù)可以有以下值:

(以下分別為:常數(shù) 值 描述)

vbUseSystem 0 使用區(qū)域語(yǔ)言支持 (NLS) API 設(shè)置。
vbSunday 1 星期日(默認(rèn))
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
firstweekofyear 參數(shù)可以有以下值:

(以下分別為:常數(shù) 值 描述)

vbUseSystem 0 使用區(qū)域語(yǔ)言支持 (NLS) API 設(shè)置。
vbFirstJan1 1 由 1 月 1 日所在的星期開(kāi)始(默認(rèn))。
vbFirstFourDays 2 由在新年中至少有四天的第一周開(kāi)始。
vbFirstFullWeek 3 由在新的一年中第一個(gè)完整的周(不跨年度)開(kāi)始。
說(shuō)明:DatePart 函數(shù)用于計(jì)算日期并返回指定的時(shí)間間隔。例如使用 DatePart 計(jì)算某一天是星期幾或當(dāng)前的時(shí)間。

其中firstdayofweek 參數(shù)會(huì)影響使用“w”和“ww”間隔符號(hào)的計(jì)算。

如果 date 是日期文字,則指定的年度會(huì)成為日期的固定部分。但是如果 date 被包含在引號(hào) (“ ”) 中,并且省略年份,則在代碼中每次計(jì)算 date 表達(dá)式時(shí),將插入當(dāng)前年份。這樣就可以編寫(xiě)適用于不同年份的程序代碼!

到此,相信大家對(duì)“在php和MySql中計(jì)算時(shí)間差的方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI