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