#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[])
{
struct tm stm;
stm.tm_sec = 27;
stm.tm_min = 5;
stm.tm_hour = 18;
stm.tm_mday = 2;
stm.tm_mon = 0;
stm.tm_year = 43;
stm.tm_wday = 0;
stm.tm_yday = 0;
printf("%d\n", mktime(&stm));
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
打印-1
我有什么误会?
[+ edit]这是使用32位目标的Visual Studio 2012.我想跟进的问题是"存储任意日期/时间值的推荐方法是什么(即可能在1900年之前的那些)?"
ben*_*bin 15
在你的情况下,43(1943)被认为是无效年份.原因是mktime返回一个time_t类型.这种类型并不是真正标准化的.文件说了什么:
该
time_t类型是一个整数值,表示自UTC时间1970年1月1日00:00后经过的秒数.而tm_year是自1900年以来的年数
这个链接什么是time_t typedef到底是什么?说:
time_t表示自Unix纪元开始以来的秒数:1970年1月1日的午夜UTC(不计算闰秒).有些系统正确处理负时间值,而有些则没有.
如果我们认为这time_t是一个带符号的32位整数,在最佳情况下,您可以创建~13/12/1901和19/1/2038之间的日期
但在你的情况下,实现不使用负面部分time_t,因此你无法在1970年之前创建日期mktime.
| 归档时间: |
|
| 查看次数: |
10123 次 |
| 最近记录: |