SCO UNIX下的时间问题

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

struct tm *ltm;

int QSSJ_y,QSSJ_m,QSSJ_d,QSSJ_h,QSSJ_f,QSSJ_s;

long cur_time,Intime,QSSJ_SC;

char firsttime[30],tmp2[255];

time(&cur_time);

ltm=localtime(&cur_time);

sprintf(firsttime, "%04d%02d%02d%02d%02d%02d",

ltm->tm_year+1900, \

ltm->tm_mon+1,\

ltm->tm_mday,\

ltm->tm_hour, \

ltm->tm_min, \

ltm->tm_sec);

QSSJ_y=ltm->tm_year+1900;

QSSJ_m=ltm->tm_mon+1;

QSSJ_d=ltm->tm_mday;

QSSJ_h=ltm->tm_hour;

QSSJ_f=ltm->tm_min;

QSSJ_s=ltm->tm_sec;

QSSJ_SC = (((((QSSJ_y-100)*12+QSSJ_m)*31+QSSJ_d-1)*24+QSSJ_h)*60+QSSJ_f)*6

printf("11111111 InTime=[%s],qssj_sc=%ld\r\n",firsttime,QSSJ_SC);

ltm=localtime(&QSSJ_SC);

sprintf(firsttime, "%04d-%02d-%02d %02d:%02d:%02d",

ltm->tm_year+1900, \

ltm->tm_mon+1,\

ltm->tm_mday,\

ltm->tm_hour, \

ltm->tm_min, \

ltm->tm_sec);

printf("22222222 InTime=[%s],qssj_sc=%ld\r\n",firsttime,QSSJ_SC);

运行结果为:

11111111 InTime=[20021215132903],qssj_sc=1035658399

22222222 InTime=[2002-10-27 02:53:19],qssj_sc=1035658399

为什么第二个时间是错的?

sprintf(tmp2,"20%02ld%02ld%02ld%02ld%02ld%02ld",

(QSSJ_SC/60L/60L/24L/31L/12L+100L)%100L,

QSSJ_SC/60L/60L/24L/31L%12L+1L,

QSSJ_SC/60L/60L/24L%31L+1L,

QSSJ_SC/60L/60L%24L,

QSSJ_SC/60L%60L,

QSSJ_SC%60L);

这样就解决问题了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航