標準庫函式中 time.h 中的函式。
作用是,將時間轉換為自1970年1月1日以來持續時間的秒數,發生錯誤時返回-1。
基本介紹
- 中文名:mktime
- 表頭檔案:#include <time.h>
- 相關函式:time,asctime,gmtime
- 返回值:返回經過的秒數
mktime功能,相關函式,表頭檔案,定義函式,函式說明,返回值,範例,php中,定義,範例,
mktime功能
將時間轉換為自1970年1月1日以來逝去時間的秒數,發生錯誤時返回-1.
相關函式
time,asctime,gmtime,localtime
表頭檔案
#include <time.h>
定義函式
time_t mktime(struct tm * timeptr);
函式說明
mktime()用來將參數timeptr所指的tm結構數據轉換成從公元1970年1月1日0時0分0 秒算起至今的時間所經過的秒數。
mktime()轉換的時間帶有時區,linux版本使用tzset、windows版本使用setTimeZoneInformation設定時區。
轉換時不考慮tm結構的tm_wday和tm_yday,僅用tm_mday來決定日期。
返回值
返回經過的秒數。
範例
/* 用time()取得時間(秒數),利用localtime()
轉換成struct tm 再利用mktime()將struct tm轉換成原來的秒數*/
#include<stdio.h>#include<time.h>int main(void){ time_t timep; struct tm* p; time(&timep); printf("time():%d\n",timep); p=localtime(&timep); timep=mktime(p); printf("time()->localtime()->mktime():%d\n",timep); return 0;}
在我的電腦上,此時運行所得的輸出為:
time():1270271767time()->localtime()->mktime()://1270271767
當然,你來運行這個例子的時候,結果肯定不一樣了,呵呵,除非你電腦時間沒調好。
php中
定義
mktime() 函式返回一個日期的 Unix時間戳。
mktime(hour,minute,second,month,day,year,is_dst)
參數 | 描述 |
hour | 可選。規定小時。 |
minute | 可選。規定分鐘。 |
second | 可選。規定秒。 |
month | 可選。規定用數字表示的月。 |
day | 可選。規定天。 |
year | 可選。規定年。在某些系統上,合法值介於 1901 - 2038 之間。不過在 PHP 5 中已經不存在這個限制了。 |
is_dst | 可選。如果時間在日光節約時間(DST)期間,則設定為1,否則設定為0,若未知,則設定為-1。 自 5.1.0 起,is_dst 參數被廢棄。因此應該使用新的時區處理特性。 |
範例
用Php判斷是否為閏年:
<?php$year=2010;$time=mktime(20,20,20,2,1,$year);//取得一個日期的Unix時間戳;if(date("t",$time)==29){//格式化時間,並且判斷2月是否是29天;echo$year."是閏年";//是29天就輸出時閏年;}else{echo$year."不是閏年";}?>
用Php求出生年齡:
<?php$year=mt_rand(1980,2010);//隨機給一個出生年;$birth=mktime(1,10,20,1,15,$year);//取得一個日期的Unix時間戳;$now=mktime();$age=intval(($now-$birth)/3600/24/365);//取得年齡;if($age>=20){echo$age."歲";echo"<br>"."<fontcolor=red>哎,老了,不中用了,^_^</font>";}else{echo$age."歲";echo"<br>"."<fontcolor=red>小P孩!O(∩_∩)O~</font>";}?>
計算每個月的最後一天
<?php$lastday=mktime(0,0,0,3,0,2000);echostrftime("LastdayinFeb2000is:%d",$lastday);$lastday=mktime(0,0,0,4,-31,2000);echostrftime("LastdayinFeb2000is:%d",$lastday);?>
年,月,日都等於零的日期被認為是非法的(否則會被當作 30.11.1999,這是很怪的行為)。