【C/C++時間系列】struct tm 通過strftime轉換成字串
【分解的時間 struct tm】
struct tm 是linux中用來儲存分解時間的資料結構。其定義在time.h中,可通過下面命令找到
$whereis time.h
其結構定義如下,基本都是整型的。有幾點需要注意的
1、tm_sec 表示秒,除了0~59秒,可以取值60,主要是考慮leap second,即閏秒
2、tm_mday 是從1開始的,表示一個月的天數,最大31
3、tm_mon 是從0開始的,即0 表示1月。
4、tm_year 是現在的年份-1900得到的數字
5、tm_yday 是從0開始的,最大365,即可表示閏年
struct tm { int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year - 1900. */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1]*/ long int tm_gmtoff; /* Seconds east of UTC. */ __const char *tm_zone; /* Timezone abbreviation. */ long int __tm_gmtoff; /* Seconds east of UTC. */ __const char *__tm_zone; /* Timezone abbreviation. */ };
【strftime 實現定製字串】
strftime的函式原型同樣定義在time.h中
extern size_t strftime (char *__restrict __s,
size_t __maxsize,
__const char *__restrict __format,
__const struct tm *__restrict __tp);
該函式有4個引數,
char型的指標:通常可以定義一個 char型別的陣列來傳遞該引數
char myStr[255]="\0";
size_t 的大小:可以使用 sizeof 來實現,即
sizeof(myStr)
const char* 型別的format:常常用於控制格式,例如
string myFormat = "%Y-%m-%d:%H:%M:%S"
最後一個引數為傳入的 struct tm 資料型別。需要傳遞一個指標。
【程式碼示例】
#include <iostream> #include <string> #include <time.h> using namespace std; int main() { struct tm mytmstruct; mytmstruct.tm_sec=33; mytmstruct.tm_min=28; mytmstruct.tm_hour=14; mytmstruct.tm_mday=24; //24號 mytmstruct.tm_mon=6; //這裡表示7月 mytmstruct.tm_year=118; //注意這裡是118,118+1900=2018 string myFormat = "%Y-%m-%d:%H:%M:%S"; //自定義格式 char myStr[255]="\0"; //strftime 第一個引數是 char * strftime(myStr,sizeof(myStr),myFormat.c_str(),&mytmstruct); //myFormat.c_str() 相容c字串,c中沒有string型別 cout<<"myStr is:" <<myStr <<endl;
編譯執行結果如下
$gcc -lstdc++ l_csdn_tm2str.cpp -o tm2str
$./tm2str
myStr is:2018-07-24:14:28:33
相關推薦
【C/C++時間系列】struct tm 通過strftime轉換成字串
【分解的時間 struct tm】 struct tm 是linux中用來儲存分解時間的資料結構。其定義在time.h中,可通過下面命令找到 $whereis time.h 其結構定義如下,基本都是整型的。有幾點需要注意的 1、tm_sec 表示秒,除了0~59秒,
【C/C++檔案處理系列】struct stat 結構體定義
獲取檔案狀態的函式 stat fstat lstat 都與struct stat 有關。函式原型如下,都定義在 sys/stat.h 中,原型如下 int stat(const char *path, struct stat *buf); int fstat(i
【C/C++時間系列】通過time()函式獲取時間戳
【時間戳】Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數 ############## 【ti
【C/C++時間系列】通過gmtime()函式將時間戳轉換成GMT時間
【GMT】Greenwich Mean Time 格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治時)的時間。 地球每天的自轉是有些不規則的,而且正在緩慢減速。所以,格林尼治時間已經不再被作為標準時間使用。現在的標準時間──世界標準時間(UTC) 【U
【腫瘤預測模型系列】如何在R軟體中求一致性指數( Harrell'concordance index:C-index)?
今晚收到一封醫生好友的郵件,諮詢如何求Harrell的C-index?曾在丁香園論壇裡遇到過朋友求助,自己也嘗試回答過,論壇裡回答的言簡意賅,針對問題論問題,沒有詳細的原理說明,今天趁回覆朋友郵件的機會,就大致總結下自己對C-index的理解以及在R軟體中的計算過程。 所謂C-index,英文名全稱conc
徹底搞清楚 C/C++ 中日期和時間 time_t 與 struct tm,time(NULL),ctime;strftime
#include <stdio.h> #include <stdlib.h> #include <time.h> int main( void ) { long i = 10000000L;
【異常/錯誤處理系列】C語言如何實現異常處理
前言: 不管是哪門程式語言,在coding過程中,我們都會遇到一個很頭痛的問題,就是如何處理函式的返回值和異常。函式返回值傳統的處理的方法是使用If/else。但對於有返回碼的函式,需要寫“無數”的if分支,程式碼很難看,也不好維護。異常處理更是頭痛,一旦發生,只有
【C/C++檔案處理系列】fstream::open函式開啟檔案
【fstream::open】 函式原型 void open (const char* filename, ios_base::openmode mode = ios_base::in | ios_base::out); 其中 filename 為
【C#冷知識系列】(一)那些你知道或者不知道的奇淫巧技
愛的 讓我 同事 orm lec 工程師 能夠 代碼 優勢 引子 正如我在個人介紹中所寫,我是一個仍然堅持.NET的頭鐵高級軟件工程師,研究C#,.NET已經六年多,一直堅持認為自己的能力不足以教授別人,所以一直沒有想法寫博客。工作幾年,內容涵蓋了.NET框架下的各種軟件的
【真槍實幹系列】Xibo-CMS-Layout關於時間軸優先順序的測試
時間軸優先順序 所有關於Xibo文章,均由檸檬加冰CSDN首發,歡迎大家支援原創 使用佈局(Layout)的過程中,發現兩個問題 背景區域如果不設定任何東西的話,那麼佈局的狀態永遠是個叉號
c/c++日期時間處理與字符串string轉換
輸入輸出 一個數 代碼 string轉換 計算 字符 span 日期 時間轉化 在c/c++實際問題的編程中,我們經常會用到日期與時間的格式,在算法運行中,通常將時間轉化為int來進行計算,而處理輸入輸出的時候,日期時間的格式卻是五花八門,以各種標點空格相連或者不加標點。
C# Unix時間戳和DateTime類型相互轉換
c# double timezone 時間戳 convert ret mil alt 相互轉換 /// <summary> /// 將Unix時間戳轉換為DateTime類型時間 /// </summary>
【數據庫系列】MySql中的select的鎖表範圍
nbsp 範圍 nod 指定 lock 無數據 才會 rdb sele 由於InnoDB預設的是Row-Level Lock,只有明確指定主鍵的時候MySql才會執行Row lock,否則MySql將會執行Table Lock. 1、明確指定主鍵則是行鎖 2、明確指定主鍵,
【SQL Server 學習系列】-- 獲取字符串中出現某字符的次數及字符某次出現的下標
nbsp pan urn ace server type char sel sql DECLARE @Str NVARCHAR(500) = ‘1_BB_CC_DD_AA_EE_YY_WW_HH_GG‘ --// 1. 獲取下劃線在字符串中出現的次數 SELECT LE
【ASP.NET MVC系列】淺談MVC
後端 nbsp 文獻 ats 路勁 onf 將在 cot get 描述 本篇文章主要概述ASP.NET MVC,具體包括如下內容: 1.MVC模式概述 2.WebForm概述 3.WebForm與MVC區別 4.ASP.NET MVC發展歷程 5.運用程序結構 6.ASP.
【APS.NET 框架系列】淺談ASP.NET 框架
處理請求 splay bapi tps cat 底層 show 一個 優化 本篇文章稍微偏原理且底層,有一定難度和且比較晦澀。 本篇文章主要是從廣度上概括一下,具體的更細粒度的,會在後續的文章中,結合具體的Demo實例分析。 一 .NET框架概述
【ASP.NET MVC系列】淺談表單和HTML輔助方法
繼承 好的 內容 概述 調用 復制 畫圖 models pac 【01】淺談Google Chrome瀏覽器(理論篇) 【02】淺談Google Chrome瀏覽器(操作篇)(上) 【03】淺談Google Chrome瀏覽器(操作篇)(下) 【04】淺談AS
【中文分詞系列】 8 更好的新詞發現演算法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
【黑帽SEO系列】網頁劫持和頁面跳轉
網頁劫持是目前黑帽SEO或者說黑產最喜歡的一種網頁引流方式,此手法往往通過入侵政府、教育機構網站(權重高),修改網站原始碼、放寄生蟲程式、設定二級目錄反向代理等實現。網頁劫持可以分為服務端劫持、客戶端劫持、百度快照劫持、百度搜索劫持等等;表現形式可以是劫持跳轉,也可以是劫持呈現的網頁內容,目
【黑帽SEO系列】基礎知識
【黑帽SEO系列】基礎知識 發表於 2016-10-09 | 分類於 黑產研究 | 熱度 3320 ℃ SEO全稱為搜尋引擎優化,是指通過站內優化、站外優化等方式,提升搜尋引擎收錄排名。既然有SEO技術,便會有相應的從業人員,他們被稱為白帽SEO,專指通過公正SEO手法,幫助提升站點排名