C/C++获取系统时间的函数汇集

Include head file time.h, though it's a C include file, C++ certainly can use it.

Under C++, you can include <ctime> instead of <time.h>

_____________________________________________________

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

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

};

参数说明: timer-使用time()函数获得的机器时间

所属文件: <time.h>

#include <time.h>

#include <stdio.h>

#include <dos.h>

int main()

{

time_t timer;

struct tm *tblock;

timer=time(NULL);

tblock=localtime(&timer);

printf("Local time is: %s",asctime(tblock));

return 0;

}

@函数名称: asctime

函数原型: char* asctime(struct tm * ptr)

函数功能: 得到机器时间(日期时间转换为ASCII码)

函数返回: 返回的时间字符串格式为:星期,月,日,小时:分:秒,年

参数说明: 结构指针ptr应通过函数localtime()和gmtime()得到

所属文件: <time.h>

#include <stdio.h>

#include <string.h>

#include <time.h>

int main()

{

struct tm t;

char str[80];

t.tm_sec=1;

t.tm_min=3;

t.tm_hour=7;

t.tm_mday=22;

t.tm_mon=11;

t.tm_year=56;

t.tm_wday=4;

t.tm_yday=0;

t.tm_isdst=0;

strcpy(str,asctime(&t));

printf("%s",str);

return 0;

}

@函数名称: ctime

函数原型: char *ctime(long time)

函数功能: 得到日历时间

函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年

参数说明: time-该参数应由函数time获得

所属文件: <time.h>

#include <stdio.h>

#include <time.h>

int main()

{

time_t t;

time(&t);

printf("Today's date and time: %s",ctime(&t));

return 0;

}

@函数名称: difftime

函数原型: double difftime(time_t time2, time_t time1)

函数功能: 得到两次机器时间差,单位为秒

函数返回: 时间差,单位为秒

参数说明: time1-机器时间一,time2-机器时间二.该参数应使用time函数获得

所属文件: <time.h>

#include <time.h>

#include <stdio.h>

#include <dos.h>

#include <conio.h>

int main()

{

time_t first, second;

clrscr();

first=time(NULL);

delay(2000);

second=time(NULL);

printf("The difference is: %f seconds",difftime(second,first));

getch();

return 0;

}

@函数名称: gmtime

函数原型: struct tm *gmtime(time_t *time)

函数功能: 得到以结构tm表示的时间信息

函数返回: 以结构tm表示的时间信息指针

参数说明: time-用函数time()得到的时间信息

所属文件: <time.h>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <dos.h>

char *tzstr="TZ=PST8PDT";

int main()

{

time_t t;

struct tm *gmt, *area;

putenv(tzstr);

tzset();

t=time(NULL);

area=localtime(&t);

printf("Local time is:%s", asctime(area));

gmt=gmtime(&t);

printf("GMT is:%s", asctime(gmt));

return 0;

}

@函数名称: time

函数原型: time_t time(time_t *timer)

函数功能: 得到机器的日历时间或者设置日历时间

函数返回: 机器日历时间

参数说明: timer=NULL时得到机器日历时间,timer=时间数值时,用于设置日历时间,time_t是一个long类型

所属文件: <time.h>

#include <time.h>

#include <stdio.h>

#include <dos.h>

int main()

{

time_t t;

t=time();

printf("The number of seconds since January 1,1970 is %ld",t);

return 0;

}

@函数名称: tzset

函数原型: void tzset(void)

函数功能: UNIX兼容函数,用于得到时区,在DOS环境下无用途

函数返回:

参数说明:

所属文件: <time.h>

#include <time.h>

#include <stdlib.h>

#include <stdio.h>

int main()

{

time_t td;

putenv("TZ=PST8PDT");

tzset();

time(&td);

printf("Current time=%s",asctime(localtime(&td)));

return 0;

}

/方案— 优点:仅使用C标准库;缺点:只能精确到秒级

#include <time.h>

#include <stdio.h>

int main( void )

{

time_t t = time(0);

char tmp[64];

strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );

puts( tmp );

return 0;

}

size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);

根据格式字符串生成字符串。

struct tm *localtime(const time_t *timer);

取得当地时间,localtime获取的结果由结构tm返回

返回的字符串可以依下列的格式而定:

%a 星期几的缩写。Eg:Tue

%A 星期几的全名。 Eg: Tuesday

%b 月份名称的缩写。

%B 月份名称的全名。

%c 本地端日期时间较佳表示字符串。

%d 用数字表示本月的第几天 (范围为 00 至 31)。日期

%H 用 24 小时制数字表示小时数 (范围为 00 至 23)。

%I 用 12 小时制数字表示小时数 (范围为 01 至 12)。

%j 以数字表示当年度的第几天 (范围为 001 至 366)。

%m 月份的数字 (范围由 1 至 12)。

%M 分钟。

%p 以 ''AM'' 或 ''PM'' 表示本地端时间。

%S 秒数。

%U 数字表示为本年度的第几周,第一个星期由第一个周日开始。

%W 数字表示为本年度的第几周,第一个星期由第一个周一开始。

%w 用数字表示本周的第几天 ( 0 为周日)。

%x 不含时间的日期表示法。

%X 不含日期的时间表示法。 Eg: 15:26:30

%y 二位数字表示年份 (范围由 00 至 99)。

%Y 完整的年份数字表示,即四位数。 Eg:2008

%Z(%z) 时区或名称缩写。Eg:中国标准时间

%% % 字符。

//方案二 优点:能精确到毫秒级;缺点:使用了windows API

#include <windows.h>

#include <stdio.h>

int main( void )

{

SYSTEMTIME sys;

GetLocalTime( &sys );

printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);

return 0;

}

//方案三,优点:利用系统函数,还能修改系统时间

//此文件必须是c++文件

#include<stdlib.h>

#include<iostream>

using namespace std;

void main()

{

system("time");

}

//方案四,将当前时间折算为秒级,再通过相应的时间换算即可

//此文件必须是c++文件

#include<iostream>

#include<ctime>

using namespace std;

int main()

{

time_t now_time;

now_time = time(NULL);

cout<<now_time;

return 0;

}

上次实验的时候调用的GETSYSYTEMTIME居然显示的是系统开机时间...又不是做定时炸弹...最后只有换GETLOCALTIME了...都聚集在一起,以后好用~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值