C语言时间函数介绍

C语言中有一个可以获取当地时间的函数,刚刚接触,写一点使用方法。

使用时间函数要预编译#include<time.h>头文件。
操作时间的函数具体有下面几个。

time_t time(time_t *t);:返回当前距1970年1月1号的秒 参数:一般填充NULL
struct tm *localtime(const time_t *timep);//将秒数转换为本地详细时间描述
 char *ctime(const time_t *timep);//将秒数转换为本地时间字符串
 struct tm *gmtime(const time_t *timep);//将秒数转换为国际标准时间详细描述
 char *asctime(const struct tm *tm);//将时间的详细描述转换为字符串

这个是C语言中存放时间结构体。

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],其中            0 代表 1 月 1 日,1 代表 1 月 2 日,以此类推*/
                  int tm_isdst;       /* 夏令时 */
              };

计算时间是把从1970年开始到现在的秒数,通过计算得出现在的年月日时分秒。

因此计算时间首先要获取秒数,然后处理输出。

time_t tm;//定义一个接收秒数的变量

time_t //是一个重定义过的typedef unsigned long time_t;

下面每个处理秒数的函数都给一个实例:

获取秒
获取秒数的方法1

#include<stdio.h>
#include<time.h>
int main()
{
 time_t tm;//定义一个接收秒数的变量
 tm = time(NULL);//time返回秒数
 printf("%ld\n", tm);//打印秒数
 return 0;
}

获取秒数的方法2

#include<stdio.h>
#include<time.h>
int main()
{	
 time_t tm;//定义一个接收秒数的变量
 time(&tm);//tm是秒数
 printf("%ld\n", tm);
 return 0;
}

有两种方法不难看出time函数是用来获取秒的
time_t time(time_t *t);:返回当前距1970年1月1号的秒

处理秒的函数

char *ctime(const time_t *timep);将秒数转换为本地时间字符串
#include<stdio.h> 
#include<time.h> 
int main()
{
 char *day;
 time_t tm = 0;
 time(&tm);//获取秒
 day = ctime(&tm);//将秒转换为本地时间字符串,注意传参是地址传递
 //printf("%s", ctime(&tm));
 printf("%s", day);//打印本地时间。会自动换行
 return 0;
}
struct tm *localtime(const time_t *timep);将秒数转换为本地详细时间描述
#include<stdio.h>
#include<time.h>
int main()
{
 struct tm *day;//定义一个接收本地详细时间的结构体变量,在上面有这个结构的详细说明
 time_t tm = 0;
 time(&tm);
 day = localtime(&tm);//将秒数转换为本地详细时间描述
 printf("%d year %d month %d day %d hour %d min %d sec\n",1900+day->tm_year,1+day->tm_mon,day->tm_mday,day->tm_hour,day->tm_min,day->tm_sec);//将时间通过访问结构体成员变量的方法逐个输出,注意年份是从1900年开始,要+1900,月份也要加1
 return 0;
}
struct tm *gmtime(const time_t *timep);将秒数转换为国际标准时间详细描述
#include<stdio.h>
#include<time.h>
int main()
{
 struct tm *day;
 time_t tm = 0;
 time(&tm);
 day = gmtime(&tm);
 printf("%d year %d month %d day %d hour %d min %d sec\n",1900+day->tm_year,1+day->tm_mon,day->tm_mday,day->tm_hour,day->tm_min,day->tm_sec);
 return 0;
}//和localtime使用方法一样
char *asctime(const struct tm *tm);将时间的详细描述转换为字符串
#include<stdio.h>
#include<time.h>
int main()
{
 struct tm *day;
 char *day1;
 time_t tm = 0;
 time(&tm);
 day = gmtime(&tm);//将秒数转换为国际标准**时间详细描述**
 printf("%d year %d month %d day %d hour %d min %d sec\n",1900+day->tm_year,1+day->tm_mon,day->tm_mday,day->tm_hour,day->tm_min,day->tm_sec);
 day1 = asctime(day);//将**时间的详细描述**转换为字符串
 printf("%s",day1);//输出字符串
 //printf("%s",asctime(day));
 return 0;
}
  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值