1. 程式人生 > >c語言-時間函式

c語言-時間函式

 一直想防著redis寫個類似功能的,可惜c太渣,於是今天開始從基本抓起-時間函式

 根據多年寫業務的經驗,通常利用到的時間函式有:

       獲取當前時間戳                                   current_time()

       獲取當前微秒(需要高精度時間場景)  micro_time()

       將字串時間轉換成時間戳                   strtotime()

       將 時間戳按照指定格式生成字串        date()

百度了下c語言自帶的常用時間函式有:

1.  time_t time(time_t * timer)  :    獲取當前時間戳,其中 time_t定義如下:

typedef long time_t; 

2.   char *strptime(const char *buf,const char*format,struct tm *timeptr)    

      將時間格式為format的buf字串轉換成tm時間格式,tm 結構如下:

    struct tm {
        int tm_sec;    //second [0,59]
        int tm_min;    //minute [0,59]
        int tm_hour;   //hour   [0,23]
        int tm_mday;   //day    [1,31]
        int tm_mon;    //month  [0,11]
        int tm_year;   //year   -1900
        int tm_wday;   //weekday 星期幾
        int tm_yday;   //yearday 年積日
        int tm_isdst;  //
    };

3. time_t mktime(strcut tm * timeptr)  將時間資料結構轉換為時間戳

4. size_t strftime(char *str, size_t count, const char *format, const struct tm *tm); 將時間格式轉為指定格式的字串str

5. struct tm *localtime(const time_t * calptr);         將時間戳轉換為本地時間格式

利用以上五個函式即可實現常用的四個目標函式,程式碼如下:

/*************************************************************************
	> File Name: time.c
	> Author: 
	> Mail: 
	> Created Time: Wed 28 Mar 2018 06:20:59 PM CST
 ************************************************************************/

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

/*
    struct tm {
        int tm_sec;    //second [0,59]
        int tm_min;    //minute [0,59]
        int tm_hour;   //hour   [0,23]
        int tm_mday;   //day    [1,31]
        int tm_mon;    //month  [0,11]
        int tm_year;   //year   -1900
        int tm_wday;   //weekday
        int tm_yday;   //yearday
        int tm_isdst;  //
    };
*/

typedef time_t int_time;
typedef double float_time;
typedef char  * str_time;
typedef const char const_str_time[100];
int_time current_time();
int_time strtotime(str_time strTime);
str_time date(const_str_time format ,int_time intTime);
float_time micro_time();
int main(void) {
    printf("%d\n",strtotime("2014-12-12 12:12:12"));
    printf("%s\n",date("%Y/%m/%d %H:%M:%S",strtotime("2014-12-12 12:12:12")));
    printf("%d\n",current_time());
    printf("%f\n",micro_time());
}

/*
    get current time with time stamp format
    獲取當前時間戳
    
*/
int_time current_time() {
    return time(NULL);    
}


/*
    get current time with  micro time stamp format
    獲取當前微秒時間戳
    
*/
float_time micro_time() {
    struct {int_time sec; int_time micro;} microTime;
    gettimeofday( µTime, NULL  );
    return microTime.sec + microTime.micro/1000000.0;    
}



/*
    change  string format to time_stamp format
    將時間戳格式轉換成指定格式字串
    @example : strtotime("2018-03-12 12:23:11")
*/
int_time strtotime(str_time strTime) {
    struct tm stm; 
    strptime(strTime, "%Y-%m-%d %H:%M:%S",&stm);
    int_time intTime = mktime(&stm);
    return intTime;
}


/*
    change time_stamp format  to string format
    將時間戳格式轉換成指定格式字串
*/
str_time date(const_str_time format ,int_time intTime) {
    struct tm *tmTime;
    str_time strTime;
    tmTime = localtime(&intTime);
    strftime(strTime,100,format,tmTime);
    return strTime;
}



相關推薦

c語言-時間函式

 一直想防著redis寫個類似功能的,可惜c太渣,於是今天開始從基本抓起-時間函式 根據多年寫業務的經驗,通常利用到的時間函式有:       獲取當前時間戳                                   current_time()       獲取當

C語言時間函式(3)之Windows下設定時間SetLocalTime和SetSystemTime

1.設定當前時區的時間 標頭檔案:#include <windows.h> 函式宣告:BOOL SetLocalTime(const SYSTEMTIME* lpSystemTime); 返回值:成功返回true,失敗返回flase 這裡介紹下SYSTEMTIM

linux下的c語言時間函式clock_gettime

clock_gettime系統呼叫詳解 1.精確級別,納秒級別 2.原型 long sys_clock_gettime (clockid_t which_clock, struct timespec

c語言時間函式

1.精確級別,納秒級別 原型 long sys_clock_gettime (clockid_t which_clock, struct timespec *tp); which_clock引數解釋 CLOCK_REALTIME:系統實時時間,隨系統實時時間改變而改變,即從

C語言時間函式time_t格式化列印...

1、time_t // 時間型別(time.h 定義)  struct tm { // 時間結構,time.h 定義如下:  int tm_sec;  int tm_min;  int tm_hour;  int tm_mday;  int tm_mon;  int tm_year;  int tm_wday

C/C++語言測試函式執行時間多種方法詳解

方法一:目前,存在著各種計時函式,一般的處理都是先呼叫計時函式,記下當前時間tstart,然後處理一段程式,再呼叫計時函式,記下處理後的時間tend,再tend和tstart做差,就可以得到程式的執行時間,但是各種計時函式的精度不一樣.下面對各種計時函式,做些簡

C語言時間日期函式總結

用到的資料結構: time_t是一個long型別 代表機器時間,可由time( )函式獲得。 日曆時間用一個(char *) 型別的字串表示。格式為:星期 月 日 小時:分:秒 年\n\0 可由函式ctime( ) asctime( ) 得到。 以tm結構表達的時間,結構tm定義如下:            

C語言gettimeofday()函式:獲取當前時間

標頭檔案:#include <sys/time.h>    #include <unistd.h>定義函式:int gettimeofday (struct timeval * tv, struct timezone * tz);函式說明:gettimeofday()會把目前的時間有t

strftime()函式C語言時間格式化

函式原型 #include <time.h> size_t strftime(char *str, size_t count, const char *format, const stru

C語言 時間函數的學習

簡寫 print cpp 目前 時區 stdlib.h 基於 名稱 eva 一直都是以簡單的time_t t,time(&t),ctime(&t)來表示時間,後來要以時間為日誌文件的名字時,就有點蒙逼了。學習一下。 tm結構: struct tm {

C語言 trim函式實現

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> //去除尾部空格 char *rtrim(char *str) { if(str == N

C語言函式宣告、形參、實參

函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數;  函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什

C語言isalpha函式

看程式碼: #include<ctype.h> #include<stdio.h> #include <iostream> using namespace std; int main(void){ char ch; int tot

c 語言函式遞迴來實現求 k 的 n 次方

       如果求取k的n次方,既可以用普通的方法實現,也可以用函式的遞迴來實現。        函式的遞迴即是自己呼叫自己的函式應用形式,即在main函式下定義一個函式,然後在這個函式內自己為了實現某個目的,函式

C語言探究函式遞迴的巧妙之處(以斐波那契數列為例)

對於許多C語言的初學者來說,函式是一個比較重要的版塊.函式的使用不僅在學習程式設計的時期可以方便我們解決一些問題.它在未來的工作中也是程式設計師們經常運用的東西.而函式的遞迴是函式這一版塊比較難懂的東西.因此小編以輸出斐波那契數列的第N項為例,來探討函式的遞迴的應用給我們的程式碼帶來的方便.

C語言 strrev函式

標頭檔案:#include<string.h> strrev()函式將字串逆置,其原型為: char *strrev(char *str); 【引數說明】str為要逆置的字串。 strrev()將str所指的字串逆置。 【返回值】返回指向逆置後的字串的指標。 strr

C語言函式(侵刪)

1.strlen 標頭檔案:#include <string.h> strlen()函式用來計算字串的長度,其原型為:unsigned int strlen (char *s);  s為指定的字串 #include<stdio.h> #include<

C語言assert函式完全攻略

斷言assert函式,C語言assert函式完全攻略 對於斷言,相信大家都不陌生,大多數程式語言也都有斷言這一特性。簡單地講,斷言就是對某種假設條件進行檢查。在 C 語言中,斷言被定義為巨集的形式(assert(expression)),而不是函式,其原型定義在<assert.h>檔

C語言read函式的那些坑

  今天在複習UNIX檔案系統,用到那個read函式,但是無意中卻掉到一個坑裡了,用了一個多小時才找到問題根源,這裡記錄一下。   問題是這樣的:我需要使用read和write函式把鍵盤輸入的資訊複製到輸出。所以我寫了如下程式: #include<stdio.h> #define MAX

linux下的c語言系統函式呼叫

目錄 4.linux下的系統函式的使用 c語言 4.1數學函式的使用 1pow函式 2.exp函式 3.log函式 4.rand()隨機數函式 4.2字元函式的使用 4.3系統時間與日期函式的使用 系統時間 時間間隔 4.4環境控制函式 &nb