gpt4 book ai didi

c++ - 使用 strptime 将字符串转换为时间但得到垃圾

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:22 26 4
gpt4 key购买 nike

我在使用 C++ 中的 strptime() 函数时遇到问题。

我在 stackoverflow 中找到了一段代码,如下所示,我想将字符串时间信息存储在 struct tm 上。虽然我应该得到关于我的 tm tm_year 变量的年份信息,但我总是得到一个垃圾。有没有人可以帮助我?提前致谢。

    string  s = dtime;
struct tm timeDate;
memset(&timeDate,0,sizeof(struct tm));
strptime(s.c_str(),"%Y-%m-%d %H:%M", &timeDate);
cout<<timeDate.tm_year<<endl; // in the example below it gives me 113
cout<<timeDate.tm_min<<endl; // it returns garbage
**string s will be like "2013-12-04 15:03"**

最佳答案

cout<<timeDate.tm_year<<endl; // in the example below it gives me 113

它应该为您提供减少 1900 的值,因此如果它为您提供 113,则表示年份为 2013。月份也会减少 1,即如果它给你 1,则实际上是二月。只需添加这些值:

#include <iostream>
#include <sstream>
#include <ctime>

int main() {
struct tm tm{};
std::string s("2013-12-04 15:03");
if (strptime(s.c_str(), "%Y-%m-%d %H:%M", &tm)) {
int d = tm.tm_mday,
m = tm.tm_mon + 1,
y = tm.tm_year + 1900;
std::cout << y << "-" << m << "-" << d << " "
<< tm.tm_hour << ":" << tm.tm_min;
}
}

输出 2013-12-4 15:3

关于c++ - 使用 strptime 将字符串转换为时间但得到垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com