string类型2017/1/21如何转化成时间格式2017-1-21
时间: 2023-08-24 21:03:44 浏览: 33
您可以使用C++中的字符串处理函数和时间处理函数来将“2017/1/21”转换为“2017-1-21”的时间格式。以下是一个示例代码:
```c++
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
int main() {
string str = "2017/1/21";
tm time = {}; // 初始化tm结构体
// 从字符串中读取年月日
sscanf(str.c_str(), "%d/%d/%d", &time.tm_year, &time.tm_mon, &time.tm_mday);
// 调整年月日的值
time.tm_year -= 1900; // tm_year表示从1900年开始的年数,所以要减去1900
time.tm_mon -= 1; // tm_mon表示从0开始的月数,所以要减去1
// 将tm结构体转换为time_t类型的时间戳
time_t timestamp = mktime(&time);
// 将时间戳转换为字符串
char buffer[20];
strftime(buffer, sizeof(buffer), "%Y-%-m-%-d", localtime(×tamp));
cout << buffer << endl; // 输出结果:2017-1-21
return 0;
}
```
注意:这里使用了一些比较特殊的格式化符号,例如“%-m”表示不带前导零的月份。这些符号的具体含义可以参考C++标准库中的文档。