好怪异的mktime函数
int main()
{
struct tm tTime;
time_t tmT = 0;
memset((void *)&tTime, 0, sizeof(tTime));
tTime.tm_year = 80;
//tTime.tm_isdst = 1;
tmT = mktime(&tTime);
printf( "%d\n ", tmT);
return 0;
}
这段程序为什么在linux和Windows下运行得到的结果不一样,各位帮忙看下。
[解决办法]
mktime - convert broken-down time into time since the Epoch
SYNOPSIS
#include <time.h>
time_t mktime(struct tm *timeptr);
DESCRIPTION
The mktime() function converts the broken-down time, expressed as local time, in the structure pointed to by timeptr, into a time since the Epoch value with the same encoding as that of the values returned by time(). The original values of the tm_wday and tm_yday components of the structure are ignored, and the original values of the other components are not restricted to the ranges described in the <time.h> entry.
A positive or 0 value for tm_isdst causes mktime() to presume initially that Daylight Savings Time, respectively, is or is not in effect for the specified time. A negative value for tm_isdst causes mktime() to attempt to determine whether Daylight Saving Time is in effect for the specified time.
Local timezone information is set as though mktime() called tzset().
Upon successful completion, the values of the tm_wday and tm_yday components of the structure are set appropriately, and the other components are set to represent the specified time since the Epoch, but with their values forced to the ranges indicated in the <time.h> entry; the final value of tm_mday is not set until tm_mon and tm_year are determined.
RETURN VALUE
The mktime() function returns the specified time since the Epoch encoded as a value of type time_t. If the time since the Epoch cannot be represented, the function returns the value (time_t)-1.
ERRORS
No errors are defined.
EXAMPLES
What day of the week is July 4, 2001?
#include <stdio.h>
#include <time.h>
struct tm time_str;
char daybuf[20];
int main(void)
{
time_str.tm_year = 2001 - 1900;
time_str.tm_mon = 7 - 1;
time_str.tm_mday = 4;
time_str.tm_hour = 0;
time_str.tm_min = 0;
time_str.tm_sec = 1;
time_str.tm_isdst = -1;
if (mktime(&time_str) == -1)
(void)puts( "-unknown- ");
else {
(void)strftime(daybuf, sizeof(daybuf), "%A ", &time_str);
(void)puts(daybuf);
}
return 0;
}
[解决办法]