- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unix时间戳和标准时间格式之间的转换-C语⾔库函数版
整理⼀下c中关于标准时间格式和时间戳之间的相互转换。
在标准时间格式和时间戳之间的转换中 有⼀个转换介质或者说是桥梁 :时间结构体tm。
对于两者的转换 都需要⾸先转换为tm结构体 再通过 ⾃带的函数即可转换成想要的格式。
⼀、标准时间格式-tm-时间戳 :
1.⾸先把标准时间格式转换为tm时间结构体 :
通过atoi函数可获取标准时间格式中的年⽉⽇时分秒 ;
再把年- 1970 ⽉- 1 即可赋值到tm中。
2.然后通过mktime函数把tm时间结构体转换为时间戳 :
(int)mktime(tm);
⼆、时间戳-tm-标准时间格式:
1.⾸先把时间戳转换为tm时间结构体 :
time_t tick = (time_t)stampTime;//stampTime为int型的时间戳 转为time_t型数据
tm = *localtime(tick);
2.然后通过strftime函数把tm时间结构体转换为标准时间:
strftime(std, sizeof (std), %Y-%m-%d %H:%M:%S, tm);
其中std为字符串 %Y-%m-%d %H:%M:%S为想要输出的格式。
以下为例 (转) :
1 标准时间准换成时间戳
int standard_to_stamp(char *str_time)
{
struct tm stm;
int iY, iM, iD, iH, iMin, iS;
memset(stm,0,sizeof (stm));
iY = atoi(str_time);
iM = atoi(str_time+5);
iD = atoi(str_time+8);
iH = atoi(str_time+ 11);
iMin = atoi(str_time+ 14);
iS = atoi(str_time+ 17);
stm.tm_year=iY- 1900;
stm.tm_mon=iM- 1;
stm.tm_mday=iD;
stm.tm_hour=iH;
stm.tm_min=iMin;
stm.tm_sec=iS;
/*printf (%d-%0d-%0d %0d:%0d:%0d\n, iY, iM, iD, iH, iMin, iS);*/ //标准时间格式例如 :20 16:08:02 12:12:30
return (int)mktime(stm);
}
2 时间戳转换成标准时间
typedef struct times
{
int Year;
int Mon;
int Day;
int Hour;
int Min;
int Second;
}Times;
Times stamp_to_standard(int stampTime)
{
time_t tick = (time_t)stampTime;
struct tm tm;
char s[100];
Times standard;
//tick = time(NULL);
tm = *localtime(tick);
strftime(s, sizeof (s), %Y-%m-%d %H:%M:%S, tm);
printf (%d: %s\n, (int)tick, s);
standard.Year = atoi(s);
standard.Mon = atoi(s+5);
standar
文档评论(0)