c语言 时间函数

作者&投稿:褒急 (若有异议请与网页底部的电邮联系)
c语言时间函数!!~

time_t nowtime; -- 声明变量 nowtime(现在时间) 为 time_t 型
struct tm *timeinfo; -- 声明变量timeinfo(时间信息)为 tm 型 结构 指针。
time_t , tm 都是 time.h 头文件里定义 的 类型。
time( &nowtime ); -- 调系统函数 time(), 获得 现在时间 (1970年起多少个“滴答”,世界标准时间)
timeinfo = localtime( &nowtime ); -- 调系统函数, 获得 当地 现在时间 (例如 东8 区,北京时间)。时间数据是 tm 型 结构。
int hour; -- 声明变量 hour (小时),整型。
hour = timeinfo->tm_hour+1 ; -- 结构 timeinfo的成员tm_hour 是时间值,+1 得 hour(小时)。
tm_hour -- 数值范围 0-23。

C语言中读取系统时间的函数为time(),其函数原型为:
#include
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],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};
编程者可以根据程序功能的情况,灵活的进行日期的读取与输出了。
例如:
#include
main()
{
time_t timep;
struct tm *p;

time (&timep);
p=gmtime(&timep);

printf("%d
",p->tm_sec); /*获取当前秒*/
printf("%d
",p->tm_min); /*获取当前分*/
printf("%d
",8+p->tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/
printf("%d
",p->tm_mday);/*获取当前月份日数,范围是1-31*/
printf("%d
",1+p->tm_mon);/*获取当前月份,范围是0-11,所以要加1*/
printf("%d
",1900+p->tm_year);/*获取当前年份,从1900开始,所以要加1900*/

printf("%d
",p->tm_yday); /*从今年1月1日算起至今的天数,范围为0-365*/
}

  c语言时间函数:
  1、获得日历时间函数:
  可以通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t * timer);
  如果已经声明了参数timer,可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间:
  2、获得日期和时间函数:
  这里说的日期和时间就是平时所说的年、月、日、时、分、秒等信息。从第2节我们已经知道这些信息都保存在一个名为tm的结构体中,那么如何将一个日历时间保存为一个tm结构的对象呢?
  其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为:
  struct tm * gmtime(const time_t *timer);
  struct tm * localtime(const time_t * timer);
  其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么用localtime()函数在中国地区获得的本地时间会比世界标准时间晚8个小时,即2005年7月30日15点18分20秒。

废话少说!对于CLOCKS_PER_SEC()简单地理解就是用来计算程序本身的执行时间
以下程序可以验证如:
#include
<stdio.h>
#include
<time.h>
#include
<windows.h>
void
main()
{
Sleep(1000);//让程序休眠一秒钟
printf("Elapsed
time:
%u
secs.\n",
clock()/CLOCKS_PER_SEC);
}
//很显然从本程序来说主函数体里用到了Sleep函数并且让它休眠了一秒钟,所以这个程序执行的时间就是1秒

C语言的建时间函数是
mktime(),原型在

调用有点繁。
下面,用我的程序输入
年月日时分秒,调用mktime(),
就得
C语言
可直接使用的
时间,
存放在
t
里。
例如
输入年月日时分秒:
2008
8
16
9
55
25
time_t
t;

就有了
各种时间信息,例如星期几...
#include
#include
void
main(){
struct
tm
*target_time;
time_t
rawtime,
t;
int
year,month,mday,hh,mm,ss;
time
(
&rawtime
);
target_time
=
localtime
(
&rawtime
);
printf("Please
enter
year
month
day
hour
minute
second\n");
printf("For
example:
\n");
printf("2008
8
16
9
55
25\n");
scanf("%d
%d
%d
%d
%d
%d",
&year,
&month,
&mday,
&hh,&mm,&ss);
target_time->tm_year
=
year
-
1900;
target_time->tm_mon=
month
-
1;
target_time->tm_mday
=
mday
;
target_time->tm_hour
=
hh
;
target_time->tm_min
=
mm
;
target_time->tm_sec
=
ss
;
//
t
=
mktime
(target_time);
//
t
is
ready
to
use
printf("%s
",ctime(&t));
}

这个试看看应该可以的
#include
<stdio.h>;
#include
<time.h>;
time_t
scanf_time(char
*
timestr)
{
struct
tm
t;
if(!timestr)
return
0;
memset(&t,
0,
sizeof(t));
sscanf(timestr,
"%02d%02d%02d
%02d:%02d:%02d",
&(t.tm_mday),
&(t.tm_mon),
&(t.tm_year),
&(t.tm_hour),
&(t.tm_min),
&(t.tm_sec));
t.tm_year
+=
100;
t.tm_mon
-=1;
return
mktime(&t);
}
int
main(int
argc,
char
*argv[])
{
time_t
x
=
0;
time_t
y
=
0;
x
=
scanf_time("160312
00:00:00");
y
=
time(NULL);
if(x>y){
//0=1970-00-01
08:00:00
struct
tm
t;
memcpy(&t,
localtime(&x),
sizeof(struct
tm));
printf("\n%d年-%d月-%d日\t%d时:%d分:%d秒\n",
t.tm_year
+
1900,
t.tm_mon+1,
t.tm_mday,
t.tm_hour,
t.tm_min,
t.tm_sec);
memcpy(&t,
localtime(&y),
sizeof(struct
tm));
printf("\n%d年-%d月-%d日\t%d时:%d分:%d秒\n",
t.tm_year
+
1900,
t.tm_mon+1,
t.tm_mday,
t.tm_hour,
t.tm_min,
t.tm_sec);
time_t
result
=
x
-
y;
memcpy(&t,
localtime(&result),
sizeof(struct
tm));
printf("\n%d年-%d月-%d日\t%d时:%d分:%d秒\n",
t.tm_year
-70,
t.tm_mon,
t.tm_mday-1,
t.tm_hour-8,
t.tm_min,
t.tm_sec);
}
system("PAUSE");
return
0;
}

早就不用TC了,不清楚。
不知道你想要干什么,如果只是想简单地用字符串格式来输出现在的时间,用下面的代码就可以了。如果要自定格式,才需要用到struct
tm结构,不过不是你写的样子。
#include
<time.h>
#include
<stdio.h>
int
main()
{
time_t
lt;
lt
=
time(NULL);
printf("The
Calendar
Time
now
is
%s\n",
ctime(&
lt));
return
0;
}


美姑县17035918975: 求C语言一个时间函数,请高手解答! -
睢泻天诺: 函数名: gettime 功 能: 取得系统时间 用 法: void gettime(struct time *timep); 程序例:#include <stdio.h>#include <dos.h> int main(void) { struct time t; gettime(&t); printf("The current time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); return 0; } 用两次分别获取时间存放后做差就行了

美姑县17035918975: C语言里面的时间函数怎么用? -
睢泻天诺: 函数名: difftime 功 能: 计算两个时刻之间的时间差 用 法: double difftime(time_t time2, time_t time1); 程序例:include <time.h>

美姑县17035918975: C语言显示系统时间的函数是什么? 请高手指点!谢谢! -
睢泻天诺: #include <time.h> #include <stdio.h> int main() { time_t lt; lt = time(NULL); printf("现在的时间是:%s\n", ctime(& lt)); return 0; }

美姑县17035918975: c语言时间函数!! -
睢泻天诺: time_t nowtime; -- 声明变量 nowtime(现在时间) 为 time_t 型 struct tm *timeinfo; -- 声明变量timeinfo(时间信息)为 tm 型 结构 指针.time_t , tm 都是 time.h 头文件里定义 的 类型.time( &nowtime ); -- 调系统函数 time(), 获得 现在时...

美姑县17035918975: C语言的时间函数 -
睢泻天诺: C语言的建时间函数是 mktime(),原型在 <time.h> 里 调用有点繁.下面,用我的程序输入 年月日时分秒,调用mktime(), 就得 C语言 可直接使用的 时间, 存放在 t 里.例如 输入年月日时分秒: 2008 8 16 9 55 25 time_t t; 里 就有了 各...

美姑县17035918975: C语言中关于显示时间的函数,谁解释一下下面的代码,一个都看不懂,谢谢 -
睢泻天诺: time_t 实际上就是长整型.time() -- 获取当前系统时钟,是1970年1月1日到现在的秒数; localtime() -- 将系统时间转换成本地时间(考虑时区上的时间差); asctime -- 将时间转换成字符串形式.另外,你最后的getch写错了,应该是getchar.

美姑县17035918975: C语言取当前时间的完整函数 -
睢泻天诺: #include "time.h" #includeint main () { time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "\007The current date/time is: %s", asctime (timeinfo) ); return 0; }

美姑县17035918975: 如何用c语言获取当前系统时间 -
睢泻天诺: 需要利用c语言的时间函数time和localtime,具体说明如下: 一、函数接口介绍: 1、time函数. 形式为time_t time (time_t *__timer); 其中time_t为time.h定义的结构体,一般为长整型. 这个函数会获取当前时间,并返回. 如果参数__timer非空...

美姑县17035918975: 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 ...

美姑县17035918975: 求教c语言时间函数
睢泻天诺: 有. #include &lt;dos.h&gt; …… struct time t; AnsiString thour,tmin,tsec; int hour,min,sec; gettime(&amp;t); thour=AnsiStirng(t.ti_hour); tmin=AnsiStirng(t.ti_min); tsec=AnsiStirng(t.ti_sec); //转换为INT类的变量 hour=StrToInt(thour); min=StrToInt(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网