C/C++ 字符串与时间戳互相转换
来源:华佗健康网
//时间戳转string 1713175204= 2024-04-15 18:00:04
struct tm *ttime;
time_t flag_time = time(NULL);
ttime = localtime(&flag_time);
char time_str[100];
cout << flag_time <<endl;
cout << mktime(ttime) <<endl;
sprintf(time_str,"%04d-%02d-%02d %02d:%02d:%02d",ttime->tm_year+1900,ttime->tm_mon+1,ttime->tm_mday,ttime->tm_hour,ttime->tm_min,ttime->tm_sec);
cout << "1 = " <<time_str <<endl;
strftime(time_str,100,"%Y年%m月%d日 %H时%M分%S秒",ttime);
cout << "2= " <<time_str <<endl;
//string转时间戳 2024-04-15 18:00:04 = 1713175204
string ss = time_str;
cout << ss <<endl;
//方式一:linux系统适用
// struct tm timeinfo;
// strptime(time_str.c_str(), "%Y年%m月%d日 %H时%M分%S秒", &timeinfo); //windows环境下没有
// time_t timeStamp = mktime(&timeinfo); //将结构体转为时间戳
// cout << timeStamp<<endl;
// 方式二
struct tm tm_;
int year, month, day, hour, minute,second;
sscanf(ss.c_str(),"%d年%d月%d日 %d时%d分%d秒", &year, &month, &day, &hour, &minute, &second);//将string按照格式进行解析到数据中
// sscanf(ss.c_str(),"%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);//将string按照格式进行解析到数据中
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;
cout << year << " "<< month << " " << day << " "<< endl;
cout << tm_.tm_year << " "<< tm_.tm_mon << " " << tm_.tm_mday << " "<< endl;
time_t timeStamp = mktime(&tm_);
cout <<"timeStamp = "<< timeStamp<<endl;
时间戳转string
string CRelayControlInterface::GetFlagTimeStr(time_t flag_time)
{
struct tm *ttime;
ttime = localtime(&flag_time);
char time_str[100];
sprintf(time_str,"%04d%02d%02d%02d%02d%02d",ttime->tm_year+1900,ttime->tm_mon+1,ttime->tm_mday,ttime->tm_hour,ttime->tm_min,ttime->tm_sec);
return string(time_str);
}
string转时间戳
time_t CRelayControlInterface::GetTimeforStr(const string& time_str)
{
struct tm timeinfo;
strptime(time_str.c_str(), "%Y-%m-%d-%H:%M:%S", &timeinfo);
time_t timeStamp = mktime(&timeinfo); //将结构体转为时间戳
return timeStamp;
}
因篇幅问题不能全部显示,请点此查看更多更全内容