在之前的文章中給大家?guī)砹恕禤HP中如何才能將時間日期格式化?怎么計算時間差?》,其中詳細的介紹了在PHP中應(yīng)該怎樣去將時間日期格式化和怎樣計算時間差,本篇文章我們一起來看一看,日期與時間戳的相互轉(zhuǎn)換,希望對大家有幫助!
在前面的文章(《PHP中獲取時間的方法總結(jié)(實例詳解)》)中我們介紹了怎樣獲取時間,也就是時間戳,那么在PHP中我們怎樣才能完成時間戳和日期時間的相互轉(zhuǎn)換呢?
日期時間轉(zhuǎn)為時間戳
我們可以通過time()
函數(shù)來獲取時間戳,但是time()函數(shù)只能獲取不同時區(qū)的當前時間的時間戳,示例如下:
<?php $time = time(); echo '當前的時間戳為:'.$time.'<br>'; ?>
輸出結(jié)果:
當我們想要將一個具體的時間轉(zhuǎn)化為時間戳,應(yīng)該怎么操作呢?這時候我們可以使用strtotime()函數(shù)來實現(xiàn)。
-
strtotime()
函數(shù)
strtotime()函數(shù)可將英文文本描述的任何字符串型的日期轉(zhuǎn)化為 UNIX 時間戳,它的語法格式如下:
strtotime(字符串形式的時間 [,用來計算返回值的參數(shù)])
示例如下:
<?php echo time().'<br>';//當前時間的時間戳 echo strtotime('now').'<br>';//使用now獲取的時間戳,也就是當前時間戳 echo strtotime("1 September 2021").'<br>';//2021年九月一日的時間戳 echo strtotime("+1 day").'<br>';//當前時間加上一天的時間戳 echo strtotime("+1 week 1 days 1 hours 1 seconds").'<br>';//當前時間加上一周一天一小時一秒的時間戳 echo strtotime("next Thursday").'<br>';//下周四的時間戳 echo strtotime("last Monday").'<br>';//上周一的時間戳 ?>
輸出結(jié)果:
由上述示例能夠看出,通過strtotime函數(shù)達到了具體時間轉(zhuǎn)話時間戳的問題,接下來在介紹一種更直觀的函數(shù)能夠完成具體時間轉(zhuǎn)化為時間戳。
-
mktime()
函數(shù)
mktime()函數(shù)能夠返回指定時間的時間戳,并且比strtotime函數(shù)要直觀一些。它的語法格式如下:
mktime(指定時間時,指定時間分,指定時間秒,指定時間月,指定時間日,指定時間年)
示例如下:
<?php echo '當前的時間戳是:'.mktime(); // 沒有設(shè)置參數(shù)則默認取得當前GMT時間 ?>
輸出結(jié)果:
獲得指定時間2021年10月21日15點0分0秒的UNIX時間戳,示例如下:
<?php echo '2021年10月21日15點0分0秒的時間戳是:'.mktime(15,0,0,10,21,2021); //設(shè)置參數(shù)表示GMT時間2021年10月21日15點0分0秒 ?>
輸出結(jié)果:
由上述示例,也可以通過mktime函數(shù)來實現(xiàn)時間日期轉(zhuǎn)化為時間戳。
上面介紹了都是日期轉(zhuǎn)化為時間戳的函數(shù)方法,那接下來我們來看一看,時間戳怎樣轉(zhuǎn)化為我們習(xí)慣的時間日期。
時間戳轉(zhuǎn)化日期時間
時間戳轉(zhuǎn)化為日期時間需要用到date()
函數(shù),這個函數(shù)用于把時間日期格式化,格式化的過程其實也可以看成是一個轉(zhuǎn)化的過程。date()函數(shù)的語法格式如下:
date(轉(zhuǎn)化后的時間格式,轉(zhuǎn)化前的時間戳)
其中轉(zhuǎn)化后的時間格式有很多種,先給大家列舉出來一些:
H
—使用 24 小時格式表示小時數(shù),零 00 到 23
m
—使用兩位的數(shù)字表示當前月份 01 到 12
d
—表示月份中的第幾天,要用兩位數(shù)來表示,不足兩位數(shù)的話,前面加個0。
Y
—使用 4 位數(shù)字表示完整的年份
s
—使用兩位數(shù)字表示秒數(shù),零 00 到 59
i
—使用兩位數(shù)字表示分鐘數(shù),零 00 到 59
接下來用1634799600這個時間戳來實驗一下吧,這個時間戳是上個示例中,2021年10月21日15點0分0秒的時間戳。
示例如下:
<?php echo '1634799600轉(zhuǎn)化為日期時間的年份為:',date('Y', 1634799600),'<br/>'; echo '1634799600轉(zhuǎn)化為日期時間的月份為:',date('m', 1634799600),'<br/>'; echo '1634799600轉(zhuǎn)化為日期時間的月內(nèi)天數(shù)為:',date('d', 1634799600),'<br/>'; echo '1634799600轉(zhuǎn)化為日期時間的小時數(shù)為:',date('H', 1634799600),'<br/>'; echo '1634799600轉(zhuǎn)化為日期時間的小時內(nèi)分鐘數(shù)為:',date('i', 1634799600),'<br/>'; echo '1634799600轉(zhuǎn)化為日期時間的分鐘內(nèi)秒數(shù)為:',date('s', 1634799600),'<br/>'; ?>
輸出結(jié)果:
可以看出,通過date函數(shù)能夠輸出正常的日期時間,但是這樣看仍然不符合我們的日常習(xí)慣,只需要將其中的參數(shù)結(jié)合在一起就可以了,示例如下:
<?php echo '1634799600轉(zhuǎn)化為日期時間為:',date('Y-m-d H:i:s', 1634799600); ?>
輸出結(jié)果:
由此我們便完成了時間戳對日期時間的轉(zhuǎn)化。
大家如果感興趣的話,可以點擊《PHP視頻教程》進行