从php脚本得到的时间格式:"2019-02-26%2018%3A36%3A10"为了能转成c++能用的格式,费了一番周折。
感觉自己在造轮子
static string& replace_all(string& str, const string& old_value, const string& new_value)
{
while (true) {
string::size_type pos(0);
if ((pos = str.find(old_value)) != string::npos)
str.replace(pos, old_value.length(), new_value);
else break;
}
return str;
}
static string reFormatTimeString(string timeStr)
{
string t_outString;
t_outString = replace_all(timeStr, "%20", " ");
t_outString = replace_all(t_outString, "%3A", ":");
return t_outString;
}
time_t strtotime(const char *date)
{
struct tm t = {0};
//unsigned long time0 = 0;
time_t time1 = 0;
sscanf(date, "%d-%d-%d %d:%d:%d", &t.tm_year, &t.tm_mon, &t.tm_mday,&t.tm_hour,&t.tm_min,&t.tm_sec);
t.tm_year -= 1900;
t.tm_mon -= 1;
// t.tm_hour = 0;
// t.tm_min = 0;
// t.tm_sec = 0;
// time0 = mktime(&t); //转换
time1 = mktime(&t); //转换
return time1;
}
demo:
string t_inStr = "2019-03-05%2011%3A53%3A00";
string t_outStr = reFormatTimeString(t_inStr);
time_t t_longSec = strtotime(t_outStr.c_str());