时间函数(一)

  • C语言中读取系统时间的函数为time(),其函数原型为:

    #include <time.h>
    time_t time( time_t * ) ;

time_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。可以调用ctime()函数进行时间转换输出:

char * ctime(const time_t *timer);

将日历时间转换成本地时间,按年月日格式,进行输出,如:
Wed Sep 23 08:43:03 2015
C语言还提供了将秒数转换成相应的时间结构的函数:

struct tm * gmtime(const time_t *timer); //将日历时间转化为世界标准时间(即格林尼治时间)

struct tm * localtime(const time_t * timer); //将日历时间转化为本地时间

将通过time()函数返回的值,转换成时间结构struct 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代表一月) - 取值区间为[0,11] */
    int tm_year; /* 年份,其值等于实际年份减去1900 */
    int tm_wday; /*星期 –取值区间为[0,6],其中0代表星期天,1代表星期一,*/
    int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365] */
    int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};

编程者可以根据程序功能的情况,灵活的进行日期的读取与输出了。
例如:

#include<time.h>
main()
{
    time_t timep;
    struct tm *p;
    time (&timep);
    p=gmtime(&timep);
    printf("%d\n",p->tm_sec); /*获取当前秒*/
    printf("%d\n",p->tm_min); /*获取当前分*/
    printf("%d\n",8+p->tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/
    printf("%d\n",p->tm_mday);/*获取当前月份日数,范围是1-31*/
    printf("%d\n",1+p->tm_mon);/*获取当前月份,范围是0-11,所以要加1*/
    printf("%d\n",1900+p->tm_year);/*获取当前年份,从1900开始,所以要加1900*/
    printf("%d\n",p->tm_yday); /*从今年1月1日算起至今的天数,范围为0-365*/
}
  • time()函数的用途是返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。
    time()函数是C语言标准库stdlib中的函数。因此要使用time(),必须在程序中包含<stdlib.h>文件。
    下面是从<stdlib.h>文件中找到的函数声明:

    time_t time(time_t *t)
    从声明中可以看出,time()函数返回值的数据类型是time_t。传递给time()函数的参数是指向time_t数据类型的指针。

  • time()函数有两种使用方式:
    (1) t1=time(NULL)或t1=time(0)
    将空指针传递给time()函数,并将time()返回值赋给变量t1
    (2) time(&t2);
    将变量t2的地址作为实参传递给time()函数,函数自动把结果传递给t2,不需要额外的赋值语句。

  • 代码示例:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    time_t t1, t2; //分别声明两种time()使用方式的赋值对象

      t1=time(0); //第一种使用方式
      time(&t2); //第二种使用方式
    
      printf("t1=%ld\n",t1);
      printf("t2=%ld",t2);
    
    return(0);
    

    }

程序运行结果如下
t1=1531208713
t2=1531208713

C语言中time函数的用法

头文件time.h
@函数名称: localtime
函数原型: struct tm *localtime(const time_t *timer)
函数功能: 返回一个以tm结构表达的机器时间信息
函数返回: 以tm结构表达的时间,结构tm定义如下:

 struct  tm 
  {
      int tm_sec;
      int tm_min;
      int tm_hour;
      int tm_mday;
      int tm_mon;
      int tm_year;
      int tm_wday;
      int tm_yday;
      int tm_isdst;
 };

参数说明: timer-使用time()函数获得的机器时间

 #include <time.h>
 #include <stdio.h>
 #include <dos.h>
 int main() 
 {
	  time_t timer;
	  struct tm *tblock;
	  timer=time(NULL);
	  tblock=localtime(&timer);
	  printf("Local time is: %s",asctime(tblock));
	  return 0;
 }

@函数名称: asctime
函数原型: char* asctime(struct tm * ptr)
函数功能: 得到机器时间(日期时间转换为ASCII码)
函数返回: 返回的时间字符串格式为:星期,月,日,小时:分:秒,年
参数说明: 结构指针ptr应通过函数localtime()和gmtime()得到
所属文件: <time.h>

 #include <stdio.h>
 #include <string.h>
 #include <time.h>
 
 int main() 
 {
 		 struct tm t;
 		 char str[80];
 		 t.tm_sec=1;
 		 t.tm_min=3;
 		 t.tm_hour=7;
 		 t.tm_mday=22;
 		 t.tm_mon=11;
 		 t.tm_year=56;
 		 t.tm_wday=4;
 		 t.tm_yday=0;
 		 t.tm_isdst=0;
 		 strcpy(str,asctime(&t));
 		 printf("%s",str);

	 return 0;
 }

@函数名称: ctime
函数原型: char *ctime(long time)
函数功能: 得到日历时间
函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年
参数说明: time-该参数应由函数time获得
所属文件: <time.h>
复制代码

#include <stdio.h>
#include <time.h>
int main()
{
	time_t t;
	time(&t);
	printf("Today's date and time: %s",ctime(&t));
	return 0;
}

@函数名称: difftime

函数原型: double difftime(time_t time2, time_t time1)
函数功能: 得到两次机器时间差,单位为秒
函数返回: 时间差,单位为秒
参数说明: time1-机器时间一,time2-机器时间二.该参数应使用time函数获得
所属文件: <time.h>

  #include <time.h>
  #include <stdio.h>
  #include <dos.h>
  #include <conio.h>
  int main()
  {
      time_t first, second;
      clrscr();
      first=time(NULL);
      delay(2000);
      second=time(NULL);
      printf("The difference is: %f seconds",difftime(second,first));
      getch();
      return 0;
  }

@函数名称: gmtime

函数原型: struct tm *gmtime(time_t *time)
函数功能: 得到以结构tm表示的时间信息
函数返回: 以结构tm表示的时间信息指针
参数说明: time-用函数time()得到的时间信息
所属文件: <time.h>

  #include <stdio.h>
  #include <stdlib.h>
  #include <time.h>
  #include <dos.h> 
  
  char *tzstr="TZ=PST8PDT";
  int main()
   {
     time_t t;
     struct tm *gmt, *area;
     putenv(tzstr);
     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;
 }

@函数名称: time

函数原型: time_t time(time_t *timer)
函数功能: 得到机器的日历时间或者设置日历时间
函数返回: 机器日历时间
参数说明: timer=NULL时得到机器日历时间,timer=时间数值时,用于设置日历时间,time_t是一个long类型
所属文件: <time.h>

 #include <time.h>
 #include <stdio.h>
 #include <dos.h>
 int main()
  {
     time_t t;
     t=time();
     printf("The number of seconds since January 1,1970 is %ld",t);
     return 0;
  }

@函数名称: tzset

函数原型: void tzset(void)
函数功能: UNIX兼容函数,用于得到时区,在DOS环境下无用途
函数返回:
参数说明:
所属文件: <time.h>

 #include <time.h> 
  #include <stdlib.h>  
  #include <stdio.h> 
  int main()
   {
       time_t td;
       putenv("TZ=PST8PDT");
       tzset();
       time(&td);
       printf("Current time=%s",asctime(localtime(&td)));
      return 0; 
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值