通过以下函数可以统计设备开机时间,关机时间,离线时间,距离1970.1.0.0.0的秒数。统计设备的运行状况!
1.获取系统当前时间距1970.1.0.0.0的秒数。通过获取的秒数方便计算嵌入式设备的离线时间。
#include<time.h>
void main(){
long runEndTime=0;
time_t timep;
runendTime=time(&timep);
printf("time() : %ld \n",runendTime);
}
2.
// GetDate - 获取当前系统日期
/**
* 函数名称:GetDate
* 功能描述:取当前系统日期
*
* 输出参数:char * psDate - 系统日期,格式为yyymmdd
* 返回结果:0 -> 成功
*/
int
GetDate(char * psDate){
time_t nSeconds;
struct tm * pTM;
time(&nSeconds); // 同 nSeconds = time(NULL);
pTM = localtime(&nSeconds);
/* 系统日期,格式:YYYMMDD */
sprintf(psDate,"%04d-%02d-%02d",
pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday);
return 0;
}
3.
// GetTime - 获取当前系统时间
/**
* 函数名称:GetTime
* 功能描述:取当前系统时间
*
* 输出参数:char * psTime -- 系统时间,格式为HHMMSS
* 返回结果:0 -> 成功
*/
int
GetTime(char * psTime) {
time_t nSeconds;
struct tm * pTM;
time(&nSeconds);
pTM = localtime(&nSeconds);
/* 系统时间,格式: HHMMSS */
sprintf(psTime, "%02d:%02d:%02d",
pTM->tm_hour, pTM->tm_min, pTM->tm_sec);
return 0;
}
4.
// GetDateTime - 取当前系统日期和时间
/**
* 函数名称:GetDateTime
* 功能描述:取当前系统日期和时间
*
* 输出参数:char * psDateTime -- 系统日期时间,格式为yyymmddHHMMSS
* 返回结果:0 -> 成功
*/
int
GetDateTime(char * psDateTime) {
time_t nSeconds;
struct tm * pTM;
time(&nSeconds);
pTM = localtime(&nSeconds);
/* 系统日期和时间,格式: yyyymmddHHMMSS */
sprintf(psDateTime, "%04d-%02d-%02d/%02d:%02d:%02d",
pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday,
pTM->tm_hour, pTM->tm_min, pTM->tm_sec);
return 0;
}
5.
//get system work time
void getSysTime(char *Runtime1){
struct sysinfo info;
char run_time[128];
if (sysinfo(&info)) {
fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s\n",errno, strerror(errno));
exit(0);
}
long timenum=info.uptime;
printf("yun xing miaoshu :%ld\n",timenum);
int runday=timenum/86400;
int runhour=(timenum%86400)/3600;
int runmin=(timenum%3600)/60;
int runsec=timenum%60;
bzero(run_time, 128);
sprintf(Runtime1,"%d-%d-%d-%d",runday,runhour,runmin,runsec);
}