首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

好怪异的mktime函数解决思路

2012-02-28 
好怪异的mktime函数intmain(){structtmtTimetime_ttmT0memset((void*)&tTime,0,sizeof(tTime))tTime.t

好怪异的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;
}


[解决办法]

探讨
原来是linux和Windows中的时区不同造成的,呵呵

热点排行