c语言中如何取时间函数 c语言获取时间( 六 )


printf("The pause used %f seconds. ",end-start);
其运行结果是一样的 。
9. 分解时间转化为日历时间
这里说的分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构 。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间 。其函数原型如下:
time_t mktime(struct tm * timeptr);
其返回值就是转化后的日历时间 。这样我们就可以先制定一个分解时间,然后对这个时间进行操作了,下面的例子可以计算出1997年7月1日是星期几:
//计算出1997年7月1日是星期几
/* Date : 10/24/2007 */
/* Author: Eman Lee */
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main(void)
{
struct tm time;
time_t t_of_day;
time.tm_year=1997-1900;
time.tm_mon=6;
time.tm_mday=1;
time.tm_hour=0;
time.tm_min=0;
time.tm_sec=1;
time.tm_isdst=0;
t_of_day=mktime(time);
printf(ctime(t_of_day));
return 0;
}
运行结果:
Tue Jul 01 00:00:01 1997
有了mktime()函数,是不是我们可以操作现在之前的任何时间呢?你可以通过这种办法算出1945年8月15号是星期几吗?答案是否定的 。因为这个时间在1970年1月1日之前 , 所以在大多数编译器中 , 这样的程序虽然可以编译通过,但运行时会异常终止 。
注:linux系统时间如果转换为 time_t 类型,都是从1970-01-01 08:00:00 开始计算
C语言如何获取本地时间,然后取时、分、秒的值?C语言有2个获取时间的函数c语言中如何取时间函数,分别是time()和localtime(),time()函数返回unix时间戳-即从1970年1月1日0:00开始所经过得秒数,而localtime()函数则是将这个秒数转化为当地的具体时间(年月日时分秒)
这里时间转化要用到一个“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],其中0代表1月1日 */
int tm_isdst;/* 夏令时标识符,夏令时tm_isdst为正c语言中如何取时间函数;不实行夏令时tm_isdst为0 */
};
示例代码:
#includestdio.h
#includetime.h
int getTime()
{
time_t t;//保存unix时间戳的变量 ,长整型
struct tm* lt;//保存当地具体时间的变量
int p;
time(t);// 等价于 t =time(NULL);获取时间戳
lt = localtime(t);//转化为当地时间
p = lt-tm_sec;//将秒数赋值给p
return p;
}
应该就是这样啦~
用c语言如何获取系统当前时间的函数?方法一,#includetime.h
int 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*/

推荐阅读