localtime;gmtime;ctime;difftime;time

#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

你可能感兴趣的:(timer,timezone,struct,null,include,日历)