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;
}