【C】【时间操作】C语言中关于时间的操作

导读:本篇文章讲解 【C】【时间操作】C语言中关于时间的操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

版权声明:

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道

如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

1. time_t别名

在C语言中,用time_t表示时间数据类型,是long长整型的别名,在头文件time.h中定于,表示日历时间。表示的是从1970年1月1日0分0秒到现在的秒数;

typedef long time_t;

2. 库函数time()

函数time()返回从1970年1月1日0分0秒到现在的秒数。

time()是C标准库中的函数,在time.h文件中声明

time_t time(time_t *t);

使用time()函数有两种方法:

time_t tnow;
// 第一种方法
tnow = time(0);
// 第二种方法
time(&tnow);

3. tm结构体

time_t的形式不符合我们的使用习惯,需要转换成可以方便表示时间的结构体tm,tm结构体在time.h中声明,如下:

struct tm
{
	int tm_sec;  // 秒:取值区间为[0,59]
	int tm_min;  // 分:取值区间为[0,59]
	int tm_hour;  // 时:取值区间为[0,23]
	int tm_mday;  // 日期:一个月中的日期,取值区间为[1,31]
	int tm_mmon;  // 月份:取值区间为[0,11],0表示1月
	int tm_year;  // 年份:其值等于十几年分减去1900
	int tm_wday;  // 星期:取值区间为[0,6],其中0代表星期天
	int tm_yday;  // 从每年的1月1日开始的天数,取值区间为[0,365],其中0代表1月1日
	int tm_isdst;  // 夏令时标识符,
};

4. 库函数localtime把time_t转换成tm

localtime函数用于把time_t表示的时间转换为struct tm结构体表示的时间。函数返回struct tm结构体的地址:

struct tm *localtime(const time_t*);

5. 库函数mktime()把tm转换成time_t

mktime()函数的功能与localtime()相反,把struct tm表示的时间转换为time_t表示的时间

time_t mktime(struct tm* );

使用示例:

#include <stdio.h>
#include <time.h>
int main()
{
	time_t tnow = time(0);  // 当前时间
	tm *ptime = localtime(&tnow);
	printf("当前时间为:%ld\r\n",tnow);
	printf("当前时间为:%4d-%02d-%02d %02d:%02d:%02d\r\n",
		ptime->tm_year+1900,
		ptime->tm_mon+1,
		ptime->tm_mday,
		ptime->tm_hour,
		ptime->tm_min,
		ptime->tm_sec);
	printf("今天是星期%d\r\n",ptime->tm_wday);
	printf("今天是今年第%d天\r\n",ptime->tm_yday+1);
	printf("1970年到现在有%ld秒\r\n",mktime(ptime));

	getc(stdin);
	return 0;
}

6. 程序睡眠

有时需要把程序挂起一段时间,可以使用sleep和usleep两个库函数,这两个库函数在头文件unistd.h中定义。

unsigned int sleep(unsigned int seconds);
int usleep(useconds_t usec);

sleep的参数单位是秒,usleep参数的单位是微秒。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46130.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!