Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vc++;mktime制造错误的月号 我不知道我犯了什么错误,我用下面的代码,但是用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;_C++_Visual C++ - Fatal编程技术网

vc++;mktime制造错误的月号 我不知道我犯了什么错误,我用下面的代码,但是用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;

vc++;mktime制造错误的月号 我不知道我犯了什么错误,我用下面的代码,但是用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;,c++,visual-c++,C++,Visual C++,struct tm的tm\u mon字段来自0-11,其中0==一月,11==十二月strftime知道这一点,并在内部进行补偿。您的cout无法弥补这一点 struct tm页面包含所有值范围的定义。OK,谢谢。这给我带来了很多问题。我想知道为什么C++ C++库中的大多数方法都使用了不同的方法,例如VisualC++库中的TimeStpPyStRoT,范围在1-12之间的月字段。这让人困惑。这就是为什么你必须阅读文档而不是猜测。通常,标准库(甚至对第三方库来说更糟)的工作方式似乎不是最明显的

struct tm
tm\u mon
字段来自
0-11
,其中0==一月,11==十二月
strftime
知道这一点,并在内部进行补偿。您的
cout
无法弥补这一点


struct tm
页面包含所有值范围的定义。

OK,谢谢。这给我带来了很多问题。我想知道为什么C++ C++库中的大多数方法都使用了不同的方法,例如VisualC++库中的TimeStpPyStRoT,范围在1-12之间的月字段。这让人困惑。这就是为什么你必须阅读文档而不是猜测。通常,标准库(甚至对第三方库来说更糟)的工作方式似乎不是最明显的“正确”方式,有时甚至不一致,通常是出于历史原因。0-11之间的tm_mon允许它直接用作月名字符串数组的索引。为什么它们不将日期字段的范围从[0-30]设置为[1-31]。如果它有任何历史原因,我很想知道这一点。正如@RobK提到的;这是一个简单的字符串名称数组索引。它实际上是“一月以来的月份”,而不是一年中的月份。
Original time:  2012-7-19 20:55:22
Converted time: 2012-08-19 20:55:22