php獲取本地化時(shí)間戳函數(shù)
在實(shí)際的工作中我們還需要經(jīng)常用到指定某個(gè)時(shí)間生成。
例如:需要找到昨天到今天此時(shí)此刻的注冊(cè)用戶。
那么我們需要做兩件事情:
????1.得到當(dāng)前的時(shí)間unix時(shí)間戳。用time()函數(shù)就可以直接搞定
????2.那么昨天指定時(shí)間該怎么生成呢。這個(gè)時(shí)候我們就需要使用到mktime()函數(shù)。簡(jiǎn)稱:make time.創(chuàng)建時(shí)間。
生成出來的時(shí)間最好是unix時(shí)間戳。因?yàn)槭?970年1月1日0時(shí)到現(xiàn)在的時(shí)間。我們做一個(gè)區(qū)間判斷,就把昨天到今天注冊(cè)的用戶按照時(shí)間篩選出來了。
我們的mktime()函數(shù)可以對(duì)一個(gè)日期和時(shí)間獲得一個(gè)本地化時(shí)間戳。其語法格式如下所示:
int mktime (int $hour [, int $minute [, int $second [, int $month [, int $day [. int$year [, int $.is_dstl.l } ] ] 31 )
函數(shù)的參數(shù)分別表示:時(shí)、分、秒、月、日、年、是否為夏令時(shí)。在使用這個(gè)函數(shù)時(shí),需要注意所列的參數(shù)要與函數(shù)的參數(shù)含義相同。例如,下面的代碼實(shí)現(xiàn)了用mktime構(gòu)造一個(gè)時(shí)間戳的功能。
<?php echo mktime (13 ,15 , 30, 8,18, 2008) ; ?>
運(yùn)行程序結(jié)果如下所示:
1219036530
mktime函數(shù)的返回結(jié)果是一個(gè)Unix時(shí)間戳,對(duì)用戶的含義不大,常常與date函數(shù)一起完成時(shí)間的轉(zhuǎn)換。
例如,下面的代碼實(shí)現(xiàn)對(duì)時(shí)間的運(yùn)算:
<?php echo date("m-d-Y h:m:s")."\n"; echo date("m-d-Y h:m:s",mktime(10,15,35,date("m"),date("d"),date("Y")))."\n"; echo date("m-d-Y h:m:s",mktime(10,15,35,date("m"),date("d")-30,date("Y")))."\n"; ?>
我們使用的時(shí)候還經(jīng)常需要使用到另外一個(gè)函數(shù):strtotime()。
它的語法格式如下:
int strtotime ( string $time [, int $now = time() ] )
它能將將英文文本的日期時(shí)間描述解析為 Unix 時(shí)間戳。
參數(shù):
????1.傳入一個(gè)字符串的時(shí)間
????2.可選參數(shù)為是否傳入unix時(shí)間戳,如果不傳則是當(dāng)前的unix時(shí)間戳。
我們來實(shí)驗(yàn)一下,看看手冊(cè)中提供的一些例子:
<?php //now為現(xiàn)在的當(dāng)前時(shí)間 echo strtotime("now")."<br />"; //2000年9月10日 echo strtotime("10 September 2000")."<br />"; //當(dāng)前時(shí)間加一天 echo strtotime("+1 day")."<br />"; //當(dāng)前時(shí)間加一周 echo strtotime("+1 week")."<br />"; //當(dāng)前時(shí)間加一周2天4小時(shí)2秒 echo strtotime("+1 week 2 days 4 hours 2 seconds")."<br />"; //下一個(gè)星期四 echo strtotime("next Thursday")."<br />"; //上一個(gè)星期一 echo strtotime("last Monday")."<br />"; ?>
通過上例發(fā)現(xiàn),把一些時(shí)間通通加上了或者減去了英文中所表示的指定時(shí)間段。