bobenge
回答数:216 | 被采纳数:48
2017-01-13 12:41:53
C 中获得当前系统时间
引用:
//方案— 优点:仅使用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;
}
引用:
//方案二 优点:能精确到毫秒级;缺点:使用了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;
}
引用:
//方案三,优点:利用系统函数,还能修改系统时间
#include<stdlib.h>
#include<iostream>
using namespace std;
void main()
{
system("time");
}
引用:
//方案四,将当前时间折算为秒级,再通过相应的时间换算即可
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
time_t now_time;
now_time = time(NULL);
cout<<now_time;
return 0;
}
time_t time(time_t *timer);
得到系统时间,
struct tm *gmtime(const time_t *timer;
转化成tm格式。
struct tm *localtime(const time_t *timer);
有时区校正的。
char *asctime(const struct tm *timeptr);
得到 Wed Jan 02 02:03:55 1980\n\0 标准GSM格式时间字符串。
size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);
根据格式字符串生成字符串。
示例:
char today[32] ="";
char second[32] ="";
tm *temptm;
time_t temptime;
temptime= time(0);
temptm = localtime(&temptime);
sprintf(today,"%d-%02d-%02d",temptm->tm_year+1900,temptm->tm_mon+1,temptm->tm_mday);
sprintf(second,"%02d:%02d:%02d",temptm->tm_hour,temptm->tm_min,temptm->tm_sec);
cout << "Time:" << second << endl;
structtm*lt;
#ifdef__LINUX_OS
structtimezonetz;
structtimevalnow;
//获得
时间戳
gettimeofday(&now,&tz);
lt=localtime(&now.tv_sec);
#else
longnow;
time(&now);
lt=localtime(&now);
#endif
以上是两种系统下的时间获取方法Linux和Windows下的
//将当前时间转换成yyy-mm-ddhh:mm:ss的格式
staticcharbuff[30]={0};
sprintf(buff,"%4d-%02d-%02d%02d:%02d:%02d",
lt->tm_year+1900,
lt->tm_mon+1,
lt->tm_mday,
lt->tm_hour,
lt->tm_min,
lt->tm_sec);
此文转自〖群英社区〗:http://bbs.copy86
群英社区欢迎您的加入,有你更加精彩!