1. 程式人生 > >#include 庫函式詳解

#include 庫函式詳解

time.h
有人總結成這麼幾句,的確是經典,自己好好程式設計試試效果吧,

兩個型別:

time_t:表示距離 UTC 時間 1970-01-01 00:00:00 的秒數。也叫做日曆時,型別是  long
clock_t: 只用於程式計時,貌似其他的沒它什麼事。
struct tm:通常用於儲存本地時。

常用函式

clock: 獲取程式開始執行後佔用的處理器時間,返回值clock_t。

time:獲取當前系統時間(UTC時間)的time_t值。

ctime:將time_t值轉換為表示本地時間的字串。

gmttime:將time_t值轉換為表示GMT時間的字串。

localtime:將time_t轉換為表示本地時間的strunct tm結構。

mktime:將表示本地時間的struct tm轉換為time_t。

asctime:將struct tm轉換為字串形式。

difftime:得到兩個日曆時之間的差值。

strftime:自定義把結構體tm的日期與時間資訊轉換為制定的格式。

========================================================================

@函式名稱: clock

函式原型:clock_t clcok()
函式功能: 獲取程式開始執行後佔用的處理器時間
函式返回: 一般 返回值/CLOCK_PER_SEC 來已秒來表示時間

@函式名稱: localtime

函式原型:structtm *localtime(const time_t *timer)
函式功能: 返回一個以tm結構表達的機器時間資訊
函式返回: 以tm結構表達的時間,結構tm定義如下:

struct tm
{
    int	tm_sec;	/* Seconds: 0-59 (K&R says 0-61?) */
    int	tm_min;	/* Minutes: 0-59 */
    int	tm_hour;	/* Hours since midnight: 0-23 */
    int	tm_mday;	/* Day of the month: 1-31 */
    int	tm_mon;	/* Months *since* january: 0-11 */
    int	tm_year;	/* Years since 1900 */
    int	tm_wday;	/* Days since Sunday (0-6) */
    int	tm_yday;	/* Days since Jan. 1: 0-365 */
    int	tm_isdst;	/* +1 Daylight Savings Time, 0 No DST,* -1 don't know */
};


引數說明: timer-使用time()函式獲得的機器時間

#include <time.h>
#include <stdio.h>
#include <dos.h>
int main()
{
	time_t timer;
	struct tm *tblock;
	timer=time(NULL);
	tblock=localtime(&timer);
	printf("Local time is: %s",asctime(tblock));
	return 0;
}

@函式名稱: asctime

函式原型:char* asctime(structtm * ptr)
函式功能: 得到機器時間(日期時間轉換為ASCII碼)
函式返回: 返回的時間字串格式為:星期,月,日,小時:分:秒,年
引數說明: 結構指標ptr應通過函式localtime()和gmtime()得到

#include <stdio.h>
#include <string.h>
#include <time.h>
int main()
{
	struct tm t; //通過自己為每個tm成員賦值,沒有什麼實際意思,大多數情況下都是通過系統函式計算time_t來得到tm中的各個數值
	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;
}

@函式名稱: ctime

函式原型:char*ctime(const time_t *tp)
函式功能: 得到日曆時間
函式返回: 返回字串格式:星期,月,日,小時:分:秒,年
引數說明: time-該引數應由函式time獲得  等同於 astime(  localtime(tp) )

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

@函式名稱: difftime

函式原型:doubledifftime(time_t time2, time_t time1)
函式功能: 得到兩次機器時間差,單位為秒
函式返回: 時間差,單位為秒
引數說明: time1-機器時間一,time2-機器時間二.該引數應使用time函式獲得

#include <time.h>
#include <stdio.h>
#include <dos.h>
#include <conio.h>
int main()
{
	time_t first, second;
	System("cls");
	first=time(NULL);
	delay(2000);
	second=time(NULL);
	printf("The difference is: %f seconds",difftime(second,first));
	getch();
	return 0;
}

@函式名稱: gmtime

函式原型:structtm *gmtime(time_t *time)
函式功能: 得到以結構tm表示的時間資訊
函式返回: 以結構tm表示的時間資訊指標
引數說明: time-用函式time()得到的時間資訊

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

char *tzstr="TZ=PST8PDT";
int main()
{
	time_t t;
	struct tm *gmt, *area;
	putenv(tzstr);
	tzset();
	t=time(NULL);
	area=localtime(&t);
	printf("Local time is:%s", asctime(area));
	gmt=gmtime(&t);
	printf("GMT is:%s", asctime(gmt));
	return 0;
}

@函式名稱: time

函式原型: time_t time(time_t *timer)
函式功能: 得到機器的日曆時間或者設定日曆時間
函式返回: 機器日曆時間
引數說明: timer=NULL時得到機器日曆時間,timer=時間數值時,用於設定日曆時間,time_t是一個long型別

#include <time.h>
#include <stdio.h>
#include <dos.h>
int main()
{
	time_t t;
	t=time(NULL);
	printf("The number of seconds since January 1,1970 is %ld\n",t);
	return 0;
}

@函式名稱: tzset

函式原型:voidtzset(void)
函式功能: UNIX相容函式,用於得到時區,在DOS環境下無用途
函式返回:
引數說明:

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
	time_t td;
	putenv("TZ=PST8PDT");
	tzset();
	time(&td);
	printf("Current time=%s",asctime(localtime(&td)));
	return 0;
}

@函式名稱: strftime

函式原型: size_t strftime( char *strDest, size_t  maxsize, const char *format, const struct tm  *timeptr);
函式功能: 根據format指向字串中格式命令把timeptr中儲存的時間資訊放在strDest指向的字串中,最多向 strDest中存放maxsize個字元。
                 
該函式返回向strDest指向的字 符串中放置的字元數。

引數說明: 轉化結果存在s中,最多maxsize個字元寫到s中
函式返回: 寫到s中的字元數(不包括'\0'),如果字元數多於ssizemax,函式返回0.

/*
   類似於sprintf(),識別以百分號(%)開始 的格式命令集合,格式化輸出結果放在一個字串中。格式命令列在下面,它們是區分大小寫的。
	%a 星期幾的簡寫
	%A 星期幾的全稱
	%b 月分的簡寫
	%B 月份的全稱
	%c 標準的日期的時間串
	%C 年份的後兩位數字
	%d 十進位制表示的每月的第幾天
	%D 月/天/年
	%e 在兩字元域中,十進位制表示的每月的第幾天
	%F 年-月-日
	%g 年份的後兩位數字,使用基於周的年
	%G 年分,使用基於周的年
	%h 簡寫的月份名
	%H 24小時制的小時
	%I 12小時制的小時
	%j 十進位制表示的每年的第幾天
	%m 十進位制表示的月份
	%M 十時製表示的分鐘數
	%n 新行符
	%p 本地的AM或PM的等價顯示
	%r 12小時的時間
	%R 顯示小時和分鐘:hh:mm
	%S 十進位制的秒數
	%t 水平製表符
	%T 顯示時分秒:hh:mm:ss
	%u 每週的第幾天,星期一為第一天 (值從0到6,星期一為0)
	%U 第年的第幾周,把星期日做為第一天(值從0到53)
	%V 每年的第幾周,使用基於周的年
	%w 十進位制表示的星期幾(值從0到6,星期天為0)
	%W 每年的第幾周,把星期一做為第一天(值從0到53)
	%x 標準的日期串
	%X 標準的時間串
	%y 不帶世紀的十進位制年份(值從0到99)
	%Y 帶世紀部分的十進位制年份
	%z,%Z 時區名稱,如果不能得到時區名稱則返回空字元。
	%% 百分號
*/

#include <stdio.h>
#include <time.h>
void main()
{
       struct tm *newtime;
       char tmpbuf[128];
       time_t lt1;
       time( <1 );
       newtime=localtime(<1);
       strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\n", newtime);
       printf(tmpbuf);
       
       return 0;
}


/*
執行結果:
Today is Saturday, day 30 of July in the year 2005.
*/

=================================================================================

知識點:

1.Coordinated Universal Time(UTC):

  協調世界時,又稱世界標準時間,也即格林威治標準時間(Greenwich Mean Time,GMT),中國內地的時間與UTC得時差為+8,也即UTC+8,美國為UTC-5。

2.Calendar Time:

 日曆時間,是用“從一個標準時間點到此時的時間經過的秒數”來表示的時間。標準時間點對不同編譯器可能會不同,但對一個編譯系統來說,標準時間是不變的。

3.epoch:時間點。

  在標準c/c++中是一個整數,用此時的時間和標準時間點相差的秒數(即日曆時間)來表示

4.clock tick:

時鐘計時單元(而不叫做時鐘滴答次數),一個時鐘計時單元的時間長短是由cpu控制的,一個clock tick不是cpu的一個時鐘週期,而是c/c++的一個基本計時單位。

5.計時函式:

clock_t clock(void);//返回值:從“開啟這個程式程序”到“程式中呼叫clock()函式”時之間的cpu時鐘計時單元(clock tick)數,MSDN中稱為掛鐘時間(wal-clock)

//time.h
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
//time.h
#define CLOCKS_PER_SEC ((clock_t)1000) //CLOCK_PER_SEC表示一秒會有多少個時鐘計時單元,標準c/c++中,最小的計時單位是一毫秒,
                                             //可通過clock()/CLOCK_T_SEC得到程序自身執行時間

6.儲存時間和日期的資料結構tm:

struct tm
{
    int tm_sec;//秒,[0-59]
    int tm_min;//分,[0-59]
    int tm_hour;//時,[0-23]
    int tm_mday;//一個月中的日期,[1-31]
    int tm_mon;//月份,[0-11]
    int tm_year;//年份,其值為實際年份-1900
    int tm_wday;//星期,[0-6]
    int tm_yday;//從每年的1月1日開始計數,[0-365]
    int tm_isdst;//夏令識別符號,實行夏令時,tm_isdst為正;不實行夏令時,tm_isdst為0;不瞭解情況時,tm_isdst為負
};
#define _TM_DEFINED
#endif

7.日曆時間用time_t儲存:

//time.h
#ifndef _TM_DEFINED
//time.h
#ifndef _TIME_T_DEFINED
typedef long time_t;
#define _TIME_T_DEFINED
#endif

使用time_t表示的日曆時間只能儲存到2038年1月18日19時14分07秒,為了能表示更久遠的時間,一些編譯器引入了64位甚至更長的整形數保 存日曆時間,如VC中採用_time64_t資料型別,通過_time64()函式獲得日曆時間(不是32位的time())這樣可以計算3001年1月 1日0時0分0秒(不包括該時間點)之前的時間。

相關推薦

#include 函式

time.h 有人總結成這麼幾句,的確是經典,自己好好程式設計試試效果吧, 兩個型別: time_t:表示距離 UTC 時間 1970-01-01 00:00:00 的秒數。也叫做日曆時,型別是  long clock_t: 只用於程式計時,貌似其他的沒它什麼事。struc

STM32函式----(外部中斷/事件控制器 EXTI)

1.void EXTI_DeInit  (void) 函式解釋:將EXTI外設暫存器重置為默註釋。RCC_APB2PeriphResetCmd引數中沒有EXTI外設的的巨集,該外設重置採取的是直接向暫存器賦預設值的操作。 例子:EXTI_DeInit ( );  

STM32函式----(通用輸入/輸出GPIO)

初始化和配置相關函式 1.void  GPIO_DeInit  (GPIO_TypeDef* GPIOx) 函式解釋:gpio的反初始化函式,該函式的作用是把GPIO相關的暫存器配置成上電覆位後的預設狀態,在第一次初始化前或者不在使用某一介面後,可以呼叫該函式。 引數

libxml2函式

許多事物符合80/20法則,libxml中也是20%的函式提供了80%的功能。下面的列表列出了libxml的主要函式及其用法說明。 1.   全域性函式說明 標頭檔案引用 xml2config --cflags 庫檔案引用 xml2config -

C++面試常見的幾個函式

strcpy() 原型宣告:char strcpy(char dest, const char *src);  功能:把從src地址開始且含有NULL結束符的字串複製到以dest開始的地址空間  說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容

C程式中對時間的處理——time函式

  功 能:將時間格式化,或者說:格式化一個時間字串。我們可以使用strftime()函式將時間格式化為我們想要的格式。   原 型:size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timept

STM32 DSP函式

對於每個函式,都存在浮點數和定點數的型別,由於使用方法是一致的,這裡我們僅以32為浮點數為例來說明。 一.BasicMathFunctions 1.絕對值 pDst[n] = abs(pSrc[n]), 0 <= n < blockSize 示例 float3

018:include函式

include函式詳解(瞭解——雖然用的很少): include函式的用法,目前有三種使用方式: 1、include(module,namespace=None): module:子url的模組字串(即:app); namespace:例項名稱空間;這個地方要注意一點,如果指定例項名稱空間,那

PLSQL連接Oracle 數據配置

evel 目錄 win32 asi ges network con 配置詳解 soft 1. 下載instantclient-basic-win32-11.2.0.1.0 (oracle官網下載地址:http://www.oracle.com/technetwork/t

oracle數據歸檔

oracle什麽是Oracle歸檔模式? Oracle數據庫有聯機重做日誌,這個日誌是記錄對數據庫所做的修改,比如插入,刪除,更新數據等,對這些操作都會記錄在聯機重做日誌裏。一般數據庫至少要有2個聯機重做日誌組。當一個聯機重做日誌組被寫滿的時候,就會發生日誌切換,這時聯機重做日誌組2成為當前使用的日誌,當聯機

JMeter數據操作

idt .cn username logs word api family -1 用戶名 Jmeter提供了JDBC連接的插件,通過執行SQL語句的java API,實現對數據庫的訪問和查詢。 一、安裝驅動包   將需要連接JDBC的jar包放入jmeter安裝文件的lib

11.Python-第三方requests(三)

raise upload int exce strong gbk auth 並且 exc Response對象 使用requests方法後,會返回一個response對象,其存儲了服務器響應的內容,如上實例中已經提到的 r.text、r.status_code……獲取文本方

深入探討Linux靜態與動態(轉)

share 分享 命名 one .com 過程 程序 簡單介紹 mage 2.生成動態庫並使用 linux下編譯時通過 -shared 參數可以生成動態庫(.so)文件,如下 庫從本質上來說是一種可執行代碼的二進制格式,可以被載入內存中執行。庫分靜態庫和動態庫兩種。

大數據量高並發的數據優化(MSSQL)

臨時表 引用 edi 強制 順序存儲 實現 好的 float 空間 轉載自:http://www.jb51.net/article/71041.htm 如果不能設計一個合理的數據庫模型,不僅會增加客戶端和服務器段程序的編程和維護的難度,而且將會影響系統實際運行的性能。所以,

數據規範

ipv4 舉例 eat sta 改變 image 字母 lin use 一、數據庫的庫名、表名、字段名命名規範: 1、駝峰表示法:即參考java中命名變量名的規範來命名,也就是如果只有一個單詞時,全部小寫;多個單詞時,第一個單詞全小寫,後面的所有單詞都是首字母大寫。舉

Oracle數據序列

art term ffffff TP 執行 清空 調用 滿足 sel 前言: 做過web開發的人員基本上都知道,數據庫表中的主鍵值有的時候我們會用數字類型的並且自增。這樣mysql、sql server中的都可以使用工具創建表的時候很容易實現。但是oracle中沒有設置自增

NCBI SRA數據使用

macos study trace bsp 使用詳解 srx inf 下載地址 fetch 轉:https://shengxin.ren/article/16 https://www.cnblogs.com/lmt921108/p/7442699.html SRA(

【Python爬蟲學習筆記8-2】MongoDB數據操作

參考資料 adding ocl 切換 username 詳解 top .com min 上一篇學習筆記8-1中介紹了MySQL和MongoDB的安裝、啟動和配置,本節我們接著學習有關MongoDB的一些概念、基本操作和在python中的使用。 MongoDB常用概念 為更好

Linux下oracle12c數據安裝

shadow follow glibc 格式化磁盤 www ech etc 12c 接收 簡介: oracle12c概述 oracle12c數據庫屬於關系型數據庫,采用C/S模式、支持SQL語言,穩定性、高性能、安全性優於其他官方網站: https://www.oracle

MySQL 的函式

完整性約束 什麼是資料完整性 資料的準確性和可靠性。 分類 實體完整性 記錄準確的。(記錄不能重複) 主鍵約束: 不能重複,不能為空。  Primary key 欄位唯一的。 不能使用業務欄位。 無意義的