vc++mktime制作错误的月份编号
vc++ mktime make wrong month number
我不知道我在下面的代码中犯了什么错误,但使用visual c++2010 sp1,我粘贴到下面的代码的结果显示了一个月的错误。
struct tm timeStamp;
timeStamp.tm_year = 2012 - 1900;
timeStamp.tm_mon = 7;
timeStamp.tm_mday = 19;
timeStamp.tm_hour = 20;
timeStamp.tm_min = 55;
timeStamp.tm_sec = 22;
timeStamp.tm_isdst = -1;
time_t time_val = mktime(&timeStamp);
const int buff_size = 20;
char buff[buff_size] = {0};
strftime(buff, buff_size, "%Y-%m-%d %H:%M:%S", localtime( &time_val ));
cout << "Original time:t"
<< timeStamp.tm_year + 1900 << "-" << timeStamp.tm_mon << "-" << timeStamp.tm_mday << " "
<< timeStamp.tm_hour << ":" << timeStamp.tm_min << ":" << timeStamp.tm_sec << endl;
cout << "Converted time:t" << buff << endl;
当我编译时,这个代码的输出结果是:
Original time: 2012-7-19 20:55:22
Converted time: 2012-08-19 20:55:22
struct tm
的tm_mon
字段来自0-11
,其中0==1月,11==12月。strftime
知道这一点,并在内部进行补偿。你的cout
不能弥补这一点。
struct tm
的C++参考页包含所有值范围的定义。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 使用to_string、reverse、stoi组合的C++反转编号给出运行时错误实例超出范围
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 连接到套接字失败 - 错误编号 88 (CPP)
- Tensorflow c++ API 失败设置 gpu/cpu 编号:SetDefaultDevice 错误:具有相同优
- 在MATLAB中仅接受INT32PTR时,将错误编号作为字符串返回
- Libxml++:在有效性错误时返回行/列编号
- vc++mktime制作错误的月份编号
- 无法理解此程序中用于检查自同构编号的错误?
- 在Qt、c++中获取最后的错误编号