1. 程式人生 > >Linux time()函式解析

Linux time()函式解析

 time() 函式語法如下:

所需標頭檔案 #include <time.h>
函式原型 time_t time(time_t * timer)
引數說明 timer=NULL時得到機器日曆時間;
timer=時間數值時,用於設定日曆時間;
函式返回值 機器日曆時間

      功能: 獲取當前的系統時間,返回的結果是一個time_t型別,其實就是一個大整數,其值表示從CUT(Coordinated Universal Time)時間1970年1月1日00:00:00(稱為UNIX系統的Epoch時間)到當前時刻的秒數。然後呼叫localtime將time_t所表示的CUT時間轉換為本地時間(我們是+8區,比CUT多8個小時)並轉成struct tm型別。

     struct tm 型別的各資料成員分別表示年月日時分秒。

struct  tm
{
       int tm_sec;
       int tm_min;
       int tm_hour;
       int tm_mday;
       int tm_mon;
       int tm_year;
       int tm_wday;
       int tm_yday;
       int tm_isdst;
}; 

補充說明:time函式的原型也可以理解為 long time(long *tloc),即返回一個long型整數。因為在time.h這個標頭檔案中time_t 實際上就是:

#ifndef _TIME_T_DEFINED
#define _TIME_T_DEFINED /* avoid multiple defines of time_t */
  
	typedef long time_t; /* time value */

#endif
函式應用舉例

程式例1

         time函式獲得日曆時間。日曆時間,是用“從一個標準時間點到此時的時間經過的秒數”來表示的時間。這個標準時間點對不同的編譯器來說會有所不同,但對一個編譯系統來說,這個標準時間點是不變的,該編譯系統中的時間對應的日曆時間都通過該標準時間點來衡量,所以可以說日曆時間是“相對時間”,但是無論你在哪一個時區,在同一時刻對同一個標準時間點來說,日曆時間都是一樣的。

#include <time.h>
#include <stdio.h>

int main(void)
{
	time_t t; 
<span style="white-space:pre">	</span>t = time(NULL);

  	printf("The number of seconds since January 1, 1970 is %ld",t);

	return 0;
}
執行結果如下:
[email protected]:~/qiang/time$ ./time1 
The number of seconds since January 1, 1970 is 1452345470
[email protected]:~/qiang/time$ 

程式例2:

         time函式也常用於隨機數的生成,用日曆時間作為種子。

#include <stdio.h>
#include <time.h>
#include<stdlib.h>

int main(void)
{
	int i;
	srand((unsigned) time(NULL));
	printf("ten random numbers from 0 to 99:\n");

	for(i = 0;i < 10;i++)
	{
		printf("%d\n",rand()%100);
	}

	return 0;
}

執行結果如下:

[email protected]:~/qiang/time$ ./time2
ten random numbers from 0 to 99:
22
0
58
7
29
90
74
7
95
55
[email protected]:~/qiang/time$ 

程式例3:

        用time() 函式結合其他函式(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標準時間

1)localtime() 函式

函式功能:返回一個以tm結構表達的機器時間資訊;

所需標頭檔案 #include <time.h>
函式原型 struct tm *localtime(const time_t *timep)
引數說明 timerp為time(NULL)獲得的日曆時間;
函式返回值  以tm結構表達的時間;

使用示例:

#include <time.h> 
#include <stdio.h> 

int main()
{
	time_t timer;
	struct tm *tblock;
	timer = time(NULL);
	tblock = localtime(&timer);

	printf("Local time is: %s",asctime(tblock));
	
	return 0; 
} 

執行結果如下:

[email protected]:~/qiang/time$ ./localtime 
Local time is: Sat Jan  9 21:37:13 2016
[email protected]:~/qiang/time$ 
2)asctime() 函式

       函式功能:asctime()將引數timeptr所指的tm結構中的資訊轉換成真實世界所使用的時間日期表示方法,然後將結果以字串形態返回。此函式已經由時區轉換成當地時間,字串格式為: "Wed Jun 30 21:49:08 1993/n" 

所需標頭檔案 #include <time.h>
函式原型  char *asctime(struct tm  *ptr)
引數說明 ptr 為 struct tm 型別的時間結構體
函式返回值 返回的時間字串格式為:星期,月,日,小時:分:秒,年

示例如下:
#include <stdio.h> 
#include <string.h> 
#include <time.h>

int main() 
{
	struct tm t;
	char str[80];
	t.tm_sec = 1;
	t.tm_min = 3;
	t.tm_hour = 7;
	t.tm_mday = 22;
	t.tm_mon = 11;
	t.tm_year = 56;
	t.tm_wday = 4;
	t.tm_yday = 0;
	t.tm_isdst = 0;
	strcpy(str,asctime(&t));
	
	printf("%s",str);

	return 0; 
} 

執行結果如下:

[email protected]:~/qiang/time$ ./asctime 
Thu Dec 22 07:03:01 1956
[email protected]:~/qiang/time$ 

3)ctime() 函式

函式功能:ctime () 將引數timep所指的time_t結構中的資訊轉換成真實世界所使用的時間日期表示方法,然後將結果以字串形態返回。此函式已經由時區轉換成當地時間,字串格式為"Wed Jun 30 21 :49 :08 1993/n"。若再呼叫相關的時間日期函式,此字串可能會被破壞。

所需標頭檔案 #include <time.h>
函式原型 char *ctime(const time_t *timep);
引數說明 timep 是由 time(NULL) 得到的日曆時間;
函式返回值 返回字串格式:星期,月,日,小時:分:秒,年

示例如下:

#include <stdio.h> 
#include <time.h> 
int main() 
{
	time_t t;
	time(&t);
	
	printf("Today's date and time: %s",ctime(&t));
	return 0; 
} 

執行結果如下:

[email protected]:~/qiang/time$ ./ctime 
Today's date and time: Sat Jan  9 21:53:51 2016
[email protected]:~/qiang/time$ 


相關推薦

Linux time()函式解析

 time() 函式語法如下: 所需標頭檔案 #include <time.h> 函式原型 time_t time(time_t * timer) 引數說明 timer=NULL時得到機器日曆時間; timer=時間數值時,用於設定日曆時間; 函式返回值 機器日

Linuxtime函式

Linux下time函式都在time.h標頭檔案中。 1、標頭檔案 和時間有關的標頭檔案有以下幾個: time.h sys/time.h sys/times.h sys/timeb.h sys/timex.h time.h是C標準庫的標頭檔案,其餘sys開頭的都是Linux系統自己的標頭檔

linux之select函式解析

select()的機制中提供一fd_set的資料結構,實際上是一long型別的陣列, 每一個數組元素都能與一開啟的檔案控制代碼(不管是Socket控制代碼,還是其他 檔案或命名管道或裝置控制代碼)建立聯絡,建立聯絡的工作由程式設計師完成, 當呼叫select()時,由核心根

linux之dup和dup2函式解析

系統呼叫dup和dup2能夠複製檔案描述符。dup返回新的檔案檔案描述符(沒有用的檔案描述符最小的編號)。dup2可以讓使用者指定返回的檔案描述符的值,如果需要,則首先接近newfd的值,他通常用來重新開啟或者重定向一個檔案描述符。 在linux下,通過open開啟以檔案後

Linux C函式strtok解析

1. 今天看了看strtok函式,特意找了下Linux核心2.0.1版本的程式碼,因為在更高版本(至少2.6)已經使用strsep替換了該函式. 函式原型: char * strtok(char * s,const char * ct) 使用第二個引數ct中的分隔符字串,分

linux之chdir函式解析

[[email protected] chdir]$ ls chdir.c [[email protected] chdir]$ cat chdir.c  /************************************************

Linux 關於time()函式的使用注意

函式原型: #include <time.h> time_t time(time_t *t); 獲取當前時間,即從1970年1月1日 00:00:00到當前時刻的秒數。 這裡注意,這個當前時間並不是系統顯示的時間(date所看到的時間), 而是從0時區的1970

Linux time() localtime() mktime()函式

函式簡介   函式名: time   標頭檔案:time.h   函式原型:time_t time(time_t * timer)   功能: 獲取當前的系統時間,返回的結果是一個time_t型別,其實就是一個大整數,其值表示從CUT(Coordinated Un

date "+%s"與linux c time函式的關係

     1、date "+%s"  從1970年1月1日00:00:00到目前經歷的秒數      2、linux c 函式,time和localtime              time:此函式會返回從公元1970年1月1日的UTC時間從0時0分0秒算起到現在所經過

Linux命令列解析函式getopt()

#include <srdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int ch;

Linux 系統DNS解析

linux 基礎運維學習1. 高速緩存dns服務器修改server的配置文件/etc/named.conf 10options { 11 listen-on port 53 { any; }; #監聽所有端口的bind服務 12 listen-on-v6 port 53 { ::1; }; 13

改變Linux的DNS解析順序(DNS到hosts)

target hosts bsp lin 才會 files linux中 參考 div 在Linux中,往往解析一個域名時,先會找/etc/hosts文件,如果/etc/hosts文件沒有對應,才會去找DNS,那麽有什麽方式,讓主機先找DNS呢? 當然有,在/etc/ns

Linux目錄結構解析

ptime blog 其他 目錄命令 .so 進程信息 roc 用戶 存在 Linux的文件系統是采用層級的樹狀目錄結構,最上層目錄根目錄是‘/‘(類似於windows C盤的 C:),然後再在此目錄下創建其他目錄,Linux有一些默認的目錄結構。深刻理解Linux下的文件

Linux常用命令解析(圖解ls)

Linux常用命令解析(圖解ls) (作者:Baron_wu) ls :顯示當前目錄下的檔案 Ls -a:顯示當前目錄下的所有檔案(包括隱藏檔案) Ls -l:以單獨一列顯示內容列表(列出許可權,所有者及其他資訊) Ls -ls:按檔案大小排序檔案內容 Ls -lar:以相反

影象識別常用到的函式解析

影象識別中常用到的函式解析 1.損失函式 計算labels和logits之間的交叉熵(cross entropy) tf.nn.softmax_cross_entropy_with_logits(

linux搭建分離解析的域名伺服器

linux搭建分離解析的域名伺服器 分離解析主要是根據不同的客戶端提供不同的域名解析記錄,來自不同地址的客戶端請求解析同一域名時,提供不同的解析結果。 實驗內容: 需要三臺主機,一臺Linux提供分離解析服務,一臺客戶端作為Internet外網使用者,一臺客戶機作為公司內網區域網使用者。 Li

tensorflow學習筆記各個函式解析

弄清以下問題的含義: 1. tf.train.global_step 獲取全域性訓練步數, 由 各種損失函式優化器中的minimize()方法負責自動加1 sess.run( fetches, feed_dict=None, o

Linux pipe函式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Sigmoid函式解析

Sigmoid函式,即f(x)=1/(1+e-x)。是神經元的非線性作用函式。廣泛應用在神經網路中。 神經網路的學習是基於一組樣本進行的,它包括輸入和輸出(這裡用期望輸出表示),輸入和輸出有多少個分量就有多少個輸入和輸出神經元與之對應。最初神經網路的權值(Weight)和閾值(Thresho

Small RTOS OSStart 函式解析

Small RTOS 是在 Keil C51 上面 編譯的。 看如下程式碼: #include "config.h" void main(void) { TMOD = (TMOD & 0XF0) | 0X01; TL0 = 0x0; TH0 = 0x0; TR0 =