现在的位置: 首页 > 综合 > 正文

localtime;gmtime;ctime;difftime;time

2013年12月13日 ⁄ 综合 ⁄ 共 6543字 ⁄ 字号 评论关闭

#include <stdio.h>
#include <stddef.h>
#include <time.h>
int main(void)
{
//4A5C84BC
time_t timer;
struct tm *tblock;
timer = 0x02000000;
//timer = time(NULL);
printf("%08X/n",timer);
tblock = localtime(&timer);
printf("Local time is: %s/n",asctime(tblock));
return 0;
}

localtime

  函数名: localtime

  功 能: 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历时间

  用 法: struct tm *localtime(const time_t *clock);

  程序例:

  #include <stdio.h>

  #include <stddef.h>

  #include <time.h>

  int main(void)

  {

  time_t timer;

  struct tm *tblock;

  timer = time(NULL);

  tblock = localtime(&timer);

  printf("Local time is: %s/n",asctime(tblock));

  return 0;

  }

  执行结果:

  Local time is: Mon Feb 16 11:29:26 2009
-----------------------------------------------------------------------------------------------------------------------------------

gmtime

  gmtime()是把日期和时间转换为格林威治(GMT)时间的函数

  头文件:TIME.H

  原形:struct tm *gmtime(long *clock);

  例:

  #include "stdio.h"

  #include "time.h"

  #include "stdlib.h"

  int main(void)

  {

  time_t t;

  struct tm *gmt, *area;

  tzset(); /* tzset()*/

  t = time(NULL);

  area = localtime(&t);

  printf("Local time is: %s", asctime(area));

  gmt = gmtime(&t);

  printf("GMT is: %s", asctime(gmt));

  return 0;

  }

  localtime和gmtime这两个函数采用了time.h中的一个tm结构体:

  struct tm

  {

  int tm_sec; /* Seconds. [0-60] (1 leap second) */

  int tm_min; /* Minutes. [0-59] */

  int tm_hour; /* Hours. [0-23] */

  int tm_mday; /* Day. [1-31] */

  int tm_mon; /* Month. [0-11] */

  int tm_year; /* Year - 1900. */

  int tm_wday; /* Day of week. [0-6] */

  int tm_yday; /* Days in year.[0-365] */

  int tm_isdst; /* DST. [-1/0/1]*/

  #ifdef __USE_BSD

  long int tm_gmtoff; /* Seconds east of UTC. */

  __const char *tm_zone; /* Timezone abbreviation. */

  #else

  long int __tm_gmtoff; /* Seconds east of UTC. */

  __const char *__tm_zone; /* Timezone abbreviation. */

  #endif

  };

  这两个函数的原型为:

  struct tm *localtime(const time_t *timep);

  struct tm *gmtime(const time_t *timep);

  具体实现为:

  localtime.c

  ---------------------------------------------------------

  #include <stdio.h>

  #include <time.h>

  void cur_time(void);

  int main(int argc,char **argv)

  {

  cur_time();

  return 0;

  }

  void cur_time(void)

  {

  char *wday[]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};

  time_t timep;

  struct tm *p;

  time(&timep);

  p=localtime(&timep); /* 获取当前时间 */

  printf("%d年%02d月%02d日",(1900+p->tm_year),
(1+p->tm_mon),p->tm_mday);

  printf("%s
%02d:%02d:%02d/n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);

  }

  ---------------------------------------------------------

  gcc localtime.c 后运行a.out结果为:

  2007年12月26日星期三 11:07:15

  gmtime.c

  ---------------------------------------------------------

  #include <stdio.h>

  #include <time.h>

  void cur_time(void);

  int main(int argc,char **argv)

  {

  cur_time();

  return 0;

  }

  void cur_time(void)

  {

  char *wday[]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};

  time_t timep;

  struct tm *p;

  time(&timep);

  p=gmtime(&timep); /* 获取当前时间 */

  printf("%d年%02d月%02d日",(1900+p->tm_year),
(1+p->tm_mon),p->tm_mday);

  printf("%s
%02d:%02d:%02d/n",wday[p->tm_wday],(p->tm_hour+8),p->tm_min,p->tm_sec);

  }

  -----------------------------------------------------------

  gcc gmtime.c 后运行a.out结果为:

  2007年12月26日星期三 11:08:34
---------------------------------------------------------------------------------------------------------------------------------

ctime

  函数名: ctime

  功 能: 把日期和时间转换为字符串

  用 法: char *ctime(const time_t *time);

  程序例:

  #include

  #include

  int main(void)

  {

  time_t t;

  time(&t);

  printf("Today's date and time: %s/n", ctime(&t));

  return 0;

  }

  
------------------------------------------------------------------------

  若在linux下使用本函数,需要include <time.h>头文件
-----------------------------------------------------------------------------------------------------------------------------------

difftime

  函数名: difftime

功 能: 计算两个时刻之间的时间差

用 法: double difftime(time_t time2, time_t time1);

程序例:

#include <time.h>

#include <stdio.h>

#include <dos.h>

#include <conio.h>

int main(void)

{

time_t first, second;

clrscr();

first = time(NULL); /* Gets system

time */

delay(2000); /* Waits 2 secs */

second = time(NULL); /* Gets system time

again */

printf("The difference is: %f /

seconds/n",difftime(second,first));

getch();

return 0;

}

---------------------------------------------------------------------------------------------------

“函数原型
time_t time(time_t *timer);
函数说明
返回当前日历时间。值的编码方法是未指定的。如果日历时间不可用,则返回值(time_t)(-1)。如果参数timer不是空指针,则返回值也将存储到
timer所指向的对象中。”

那是什么原因导致time(NULL)返回的错误的值呢?上面说的日历时间不可用是什么意思,什么时候会导致日历时间不可用?


skyxie»
你看的那个是linux/unix平台的说明吧~
MSDN中:
"Return the time as seconds elapsed since midnight, January 1, 1970. There
is no error return.

"

请确认你的 mysavesturct.time 都被初始化了~ 如果没有初始化就存储, 就会出现1970.1.1


zteclx»
应该是变量没有初始化,很多新手都爱这样错。严格按软件工程来做

----------------------------------------------------------------------------------------------------

获取系统当前时间
gmtime
/localtime
函数
2009-06-29 09:57

 

函数的
原型:



struct
tm *localtime(const time_t *timep);



struct
tm *gmtime
(const
time_t *timep);



头文件
:
#include <time.h>



 

函数说
明:



gmtime
()

将参数
timep

指的

time_t
结构中的信息转换成真实世界所使用的时间日期格式,然后将结果由结构
tm

回。结构

tm
的定义为


struct  
tm



{


     
int  

tm_sec;           
/*0-59

的秒数
*/


     
int  

tm_min;           
/* 0-59

的分

*/


     
int  

tm_hour;        
/* 0-23

的小时数

*/



     
int  

tm_mday;      
/*1-31

的日期数
*/


     
int  

tm_mon;        
/*0-11

的月数
*/


     
int  

tm_year;        
/* 1900~

至今的
年数

*/


     
int  

tm_wday;      
/*0-6

的星期数
*/


     
int  

tm_yday;      
/*0-365

的天数
*/


     
int  

tm_isdst;      
/*

日光节约时间的旗标
*/


};


 

返回值
  


此函数返回未经时区转换的

UTC
时间结构
tm


  例
:

  
#include
"stdio.h"

  
#include
"time.h"

  
#include
"stdlib.h"

  
int
main(void)

  
{

  
time_t
t;

  
struct
tm *gmt, *area;

  
tzset();
/* tzset()*/

  
t =
time(NULL);

  
area
= localtime(&t);

  
printf("Local
time is: %s", asctime(area));

  
gmt =
gmtime
(&t);

  
printf("GMT
is: %s", asctime(gmt));

  
return
0;

  
}

  具体实现为:

  
localtime.c

  
---------------------------------------------------------

  
#include
<stdio.h>

  
#include
<time.h>

  
void
cur_time(void);

  
int
main(int argc,char **argv)

  
{

  
cur_time();

  
return
0;

  
}

  
void
cur_time(void)

  
{

  
char
*wday[]={"

星期天
","
星期一
","

期二

","
星期三
","
星期四
","

期五

","
星期六
"};

  
time_t
timep;

  
struct
tm *p;

  
time(&timep);

  
p=localtime(&timep);
/*

获取当前时间
*/

  
printf("%d

%02d

%02d

",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);

  
printf("%s

%02d:%02d:%02d/n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);

  
}

  
---------------------------------------------------------

  
gcc
localtime.c

后运行
a.out
结果为:

  
2007星
期三


12

26


11:07:15

  
gmtime
.c

  
---------------------------------------------------------

  
#include
<stdio.h>

  
#include
<time.h>

  
void
cur_time(void);

  
int
main(int argc,char **argv)

  
{

  
cur_time();

  
return
0;

  
}

  
void
cur_time(void)

  
{

  
char
*wday[]={"

星期天
","
星期一
","

期二

","
星期三
","
星期四
","

期五

","
星期六
"};

  
time_t
timep;

  
struct
tm *p;

  
time(&timep);

  
p=gmtime
(&timep);
/*

获取当前时间
*/

  
printf("%d

%02d

%02d

",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);

printf("%s
%02d:%02d:%02d/n",wday[p->tm_wday],(p->tm_hour+8),p->tm_min,p->tm_sec);

  
}

  
-----------------------------------------------------------

  
gcc gmtime
.c

后运行
a.out
结果为:

  
2007星
期三


12

26


11:08:34

抱歉!评论已关闭.