在php和MySql中計算時間差的方法詳解
來源:易賢網(wǎng) 閱讀:657 次 日期:2015-03-30 11:37:22
溫馨提示:易賢網(wǎng)小編為您整理了“在php和MySql中計算時間差的方法詳解”,方便廣大網(wǎng)友查閱!

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

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

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

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

下面主要說明之:

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

代碼如下:

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

$days=round(($enddate-$startdate)/3600/24) ;

echo $days;

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

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

最后說一下SQL的計算方法:

DateDiff 函數(shù)

描述:返回兩個日期之間的時間間隔。

語法:

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear>)

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

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

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

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

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

yyyy (年)

q (季度)

m (月)

y (一年的日數(shù))

d (日)

w (一周的日數(shù))

ww (周)

h (小時)

n (分鐘)

s (秒)

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

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

vbUseSystem 0 使用區(qū)域語言支持 (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ū)域語言支持 (NLS) API 設(shè)置。

vbFirstJan1 1 由 1 月 1 日所在的星期開始(默認(rèn))。

vbFirstFourDays 2 由在新年中至少有四天的第一周開始。

vbFirstFullWeek 3 由在新的一年中第一個完整的周開始。

說明:DateDiff 函數(shù)用于判斷在兩個日期之間存在的指定時間間隔的數(shù)目。

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

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

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

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

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

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

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

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

DatePart 函數(shù)

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

DatePart(interval, date[, firstdayofweek[, firstweekofyear>)

DatePart: 函數(shù)的語法有以下參數(shù):

interval: 必選。字符串表達(dá)式,表示要返回的時間間隔。有關(guān)數(shù)值,請參閱“設(shè)置”部分。

date: 必選。要計算的日期表達(dá)式。

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

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

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

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

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

vbUseSystem 0 使用區(qū)域語言支持 (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ū)域語言支持 (NLS) API 設(shè)置。

vbFirstJan1 1 由 1 月 1 日所在的星期開始(默認(rèn))。

vbFirstFourDays 2 由在新年中至少有四天的第一周開始。

vbFirstFullWeek 3 由在新的一年中第一個完整的周(不跨年度)開始。

說明:DatePart 函數(shù)用于計算日期并返回指定的時間間隔。例如使用 DatePart 計算某一天是星期幾或當(dāng)前的時間。

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

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

以上所述就是本文的全部內(nèi)容了,希望能夠?qū)Υ蠹沂炀氄莆誴hp有所幫助。

請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:在php和MySql中計算時間差的方法詳解
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機(jī)號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)