1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C/C++时间字符串和时间戳的相互转化

C/C++时间字符串和时间戳的相互转化

时间:2019-07-03 01:53:25

相关推荐

C/C++时间字符串和时间戳的相互转化

用到的函数主要有strftime、strptime 、localtime 、mktime

名词解释:

时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

时间字符串:形如-12-01 12:00:00

size_t strftime(char *s,size_t maxsize,char *format,const struct tm *timeptr)

作用:strftime将一个tm结构格式化为一个字符串

参数:format为输出数据格式

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

作用:strptime则是将一个字符串格式化为一个tm结构。

参数:buf为要修改的时间,一般为GPS时间

Format为数据格式,与buf时间格式必须一致,要不然会有段错误

%Y-%m-%d %H:%M:%S 年-月-日 时:分:秒

其他常见的格式化字符如下表所示:

时间戳转时间字符串(strftime)

#include <stdio.h>#include <string>#include <time.h>using namespace std;string convertTimeStamp2TimeStr(time_t timeStamp){struct tm *timeinfo = nullptr;char buffer[80];timeinfo = localtime(&timeStamp);strftime(buffer,80,"%Y-%m-%d %H:%M:%S",timeinfo);printf("%s\n",buffer);return string(buffer);}int main(void){convertTimeStamp2TimeStr(1633071600); //-10-1 15:00:00return 0;}

时间字符串转时间戳

#include <stdio.h>#include <string>#include <time.h>using namespace std;time_t convertTimeStr2TimeStamp(string timeStr){struct tm timeinfo;strptime(timeStr.c_str(), "%Y-%m-%d %H:%M:%S", &timeinfo);time_t timeStamp = mktime(&timeinfo);printf("timeStamp=%ld\n",timeStamp);return timeStamp;}int main(void){convertTimeStr2TimeStamp("-10-1 15:00:00");return 0;}

windows下时间字符串转时间戳

由于windows下没有strptime函数,可以使用scanf来格式化时间

#include <stdio.h>#include <string>#include <time.h>#include <iostream>using namespace std;time_t StringToTimeStamp(string str){struct tm tm_;int year, month, day, hour, minute,second;sscanf(str.c_str(),"%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);tm_.tm_year = year-1900;tm_.tm_mon = month-1;tm_.tm_mday = day;tm_.tm_hour = hour;tm_.tm_min = minute;tm_.tm_sec = second;tm_.tm_isdst = 0;time_t timeStamp = mktime(&tm_);return timeStamp;}int main(void){cout << StringToTimeStamp("-10-1 15:00:00") << endl;return 0;}

结构体tm转time_t

time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数,发生错误时返回-1

time_t转结构体tm

struct tm *localtime(const time_t *timer) 使用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。