localtime;gmtime;ctime;difftime;time

    技术2022-05-20  42

    #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("X/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年d月d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);

      printf("%s d:d:d/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年d月d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);

      printf("%s d:d:d/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 年 d 月 d 日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);

       printf("%s d:d:d/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 年 d 月 d 日 ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);

    printf("%s d:d:d/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


    最新回复(0)